/* hybriditentti-ohje: sivun omat sisältötyylit (pienoismallit). Poistuvat, kun pienoismallit korvataan kaappauksilla. */
:root{--blue:#2563eb; --blue-dark:#1d4ed8; --green:#16a34a; --green-dark:#15803d; --ink:#1e293b; --muted:#475569; --soft:#64748b; --faint:#94a3b8; --line:#e2e8f0; --line2:#cbd5e1; --card:#fafbfc; --head:#f1f5f9; --badge-bg:#e0e7ff; --badge-ink:#3730a3; --bank-bg:#fef3c7; --bank-ink:#92400e; --help-bg:#f0f9ff; --help-line:#38bdf8; --help-ink:#0c4a6e; --warn-bg:#fef3c7; --warn-line:#f59e0b; --warn-ink:#92400e}
h3.sub{font-size:1.12em; margin:26px 0 8px; color:var(--ink)}
.callout{background:var(--help-bg); border-left:4px solid var(--help-line); color:var(--help-ink);
    padding:12px 16px; border-radius:8px; margin:16px 0; font-size:.95em;}
.callout.warn{background:var(--warn-bg); border-left-color:var(--warn-line); color:var(--warn-ink)}
.callout strong{color:inherit}
ul.clean{margin:10px 0; padding-left:22px}
ul.clean li{margin:6px 0}
.path{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:14px 0; font-size:.92em}
.path .crumb{background:#fff; border:1px solid var(--line2); border-radius:8px; padding:6px 12px; font-weight:600; color:var(--muted)}
.path .arr{color:var(--faint); font-weight:700}
.mock{margin:20px 0 8px; border-radius:12px; overflow:hidden; box-shadow:0 14px 34px rgba(15,23,42,.16); border:1px solid var(--line)}
.mock .bar{background:#e9eef5; padding:9px 12px; display:flex; align-items:center; gap:7px; border-bottom:1px solid var(--line)}
.mock .dot{width:11px;height:11px;border-radius:50%}
.mock .dot.r{background:#f87171}
.mock .dot.y{background:#fbbf24}
.mock .dot.g{background:#34d399}
.mock .bar .ttl{margin-left:10px; font-size:.8em; color:var(--soft); font-weight:600}
.mock .body{background:#fff; padding:0}
.app{font-size:14px; color:var(--ink)}
.tcards{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px}
.tc{position:relative; background:#fff; border:1px solid #e2e8f0; border-radius:12px;
      padding:14px 14px 14px 18px; min-height:84px; display:flex; flex-direction:column;
      align-items:flex-start; gap:6px; overflow:hidden}
.tc::before{content:''; position:absolute; left:0; top:0; bottom:0; width:4px}
.tc.exams::before{background:linear-gradient(180deg,#f59e0b,#d97706)}
.tc.essay::before{background:linear-gradient(180deg,#14b8a6,#0d9488)}
.tc.peer::before{background:linear-gradient(180deg,#8b5cf6,#6d28d9)}
.tc.video::before{background:linear-gradient(180deg,#ef4444,#dc2626)}
.tc.hybrid.active{border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,.18)}
.tc-ic{font-size:1.35rem; line-height:1}
.tc-lb{font-weight:600; font-size:.92rem; color:#0f172a}
.tc-ct{font-size:.78rem; color:#475569}
.tc-ct.empty{color:#94a3b8; font-style:italic}
.hxpanel{background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:16px 18px;
           margin-bottom:14px; box-shadow:0 4px 14px rgba(15,23,42,.05)}
.hxpanel-head{display:flex; align-items:center; justify-content:space-between; font-weight:700;
                color:#0f172a; padding-bottom:12px; border-bottom:1px solid #e2e8f0}
.hxclose{font-weight:600; color:#64748b; font-size:.9em}
.hxpanel-empty{font-size:.82em; color:#94a3b8; margin:14px 0}
.hxadd{width:100%; text-align:center; border:1px solid #bbf7d0; color:#15803d; background:#f0fdf4;
         border-radius:8px; padding:10px; font-weight:600; font-size:.9em; cursor:default}
.modal{background:#fff; max-width:760px; margin:0 auto; padding:18px 22px; color:var(--ink)}
.modal h2.mh{margin:0 0 14px; font-size:1.2em; display:flex; align-items:center; gap:10px}
.sbadge{font-size:.66em; padding:2px 10px; border-radius:12px; font-weight:600}
.sbadge.draft{background:#e2e8f0; color:#475569}
.sbadge.pub{background:#dcfce7; color:#166534}
.field{margin-bottom:13px}
.field > label{display:block; font-size:.82em; font-weight:600; color:var(--muted); margin-bottom:4px}
.inp{width:100%; padding:7px 10px; border:1px solid var(--line2); border-radius:6px; font-size:.93em; background:#fff; color:var(--ink)}
.inp.area{min-height:46px; white-space:pre-wrap}
.row2{display:grid; grid-template-columns:1fr 1fr; gap:10px}
@media(max-width:560px){
.row2{grid-template-columns:1fr}
}
.chk{display:inline-flex; align-items:center; gap:7px; font-size:.86em; color:var(--muted)}
.chk .box{width:15px;height:15px;border:1px solid var(--line2);border-radius:3px;display:inline-block;position:relative;background:#fff}
.chk .box.x{background:var(--blue);border-color:var(--blue)}
.chk .box.x::after{content:"✓";color:#fff;font-size:11px;position:absolute;top:-2px;left:1px}
.qhead{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:18px 0 10px; padding-top:12px; border-top:1px solid var(--line)}
.qhead h3{margin:0; font-size:1.02em}
.btn{border:none; border-radius:6px; padding:8px 15px; font-weight:600; font-size:.86em; display:inline-flex; align-items:center; gap:6px; cursor:default}
.btn.ghost{background:#e2e8f0; color:var(--ink)}
.btn.primary{background:var(--blue); color:#fff}
.btn.pub{background:var(--green); color:#fff}
.btn.sm{padding:5px 11px; font-size:.82em}
.total{margin-left:auto; font-size:.86em; font-weight:600; color:var(--muted)}
.addmenu{border:1px solid var(--line2); border-radius:8px; width:280px; box-shadow:0 8px 24px rgba(0,0,0,.12); overflow:hidden; margin:4px 0}
.addmenu div{padding:9px 14px; font-size:.9em; cursor:default}
.addmenu div:hover{background:var(--bg)}
.qrow{border:1px solid var(--line); border-radius:8px; margin-bottom:10px; background:var(--card); overflow:hidden}
.qrow .qh{display:flex; align-items:center; gap:8px; padding:9px 12px; background:var(--head)}
.qrow .qh .tt{font-weight:600; font-size:.9em; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.qtype{font-size:.72em; padding:2px 8px; border-radius:10px; background:var(--badge-bg); color:var(--badge-ink); white-space:nowrap}
.qmeta{font-size:.78em; color:var(--soft); white-space:nowrap}
.qacts{display:flex; gap:5px}
.qacts button{border:1px solid var(--line2); background:#fff; color:var(--muted); border-radius:6px; padding:3px 8px; font-size:.85em; cursor:default}
.qbody{padding:12px; border-top:1px solid var(--line)}
.help{background:var(--help-bg); border-left:3px solid var(--help-line); color:var(--help-ink); padding:9px 12px; border-radius:4px; font-size:.84em; margin-bottom:10px}
.banktag{font-size:.7em; padding:2px 8px; border-radius:10px; background:var(--bank-bg); color:var(--bank-ink)}
select.inp{appearance:none; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='3'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat:no-repeat; background-position:right 10px center; padding-right:28px}
.footbar{display:flex; gap:10px; align-items:center; margin-top:16px; padding-top:13px; border-top:1px solid var(--line); flex-wrap:wrap}
.lockednote{background:var(--warn-bg); border-left:3px solid var(--warn-line); color:var(--warn-ink); padding:9px 12px; border-radius:4px; font-size:.86em; margin-bottom:12px; display:flex; gap:12px; align-items:center; flex-wrap:wrap}
.glist .gcourse{font-weight:700; padding:8px 4px; border-bottom:1px solid var(--line)}
.glist .gexam{padding:6px 4px 6px 18px; font-weight:600; color:var(--muted)}
.gsub{display:flex; align-items:center; gap:10px; padding:8px 4px 8px 32px; border-bottom:1px solid var(--line); font-size:.92em; flex-wrap:wrap}
.gsub .nm{flex:1; min-width:120px}
.gsub .tm{color:var(--soft); font-size:.86em}
.tag{font-size:.74em; padding:2px 9px; border-radius:11px; font-weight:600}
.tag.ung{background:#fee2e2; color:#b91c1c}
.tag.grd{background:#dcfce7; color:#166534}
.gcard{border:1px solid var(--line); border-radius:8px; margin-bottom:10px; overflow:hidden}
.gcard .gch{display:flex; gap:10px; align-items:center; padding:9px 12px; background:var(--head); font-weight:600; font-size:.9em}
.gcard .gcb{padding:12px}
.ansbox{background:#f8fafc; border:1px solid var(--line); border-radius:6px; padding:9px 11px; font-size:.9em; margin:6px 0}
.ans-correct{color:var(--green-dark); font-weight:600}
.pillrow{display:flex; gap:14px; flex-wrap:wrap; align-items:flex-end; margin-top:8px}
.scoreband{background:#f8fafc; border:1px solid var(--line); border-radius:8px; padding:13px; margin-top:6px}
.kbd{font-family:ui-monospace,Menlo,Consolas,monospace; background:#eef2f7; border:1px solid var(--line2); border-radius:5px; padding:1px 7px; font-size:.86em}
.types{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px}
@media(max-width:640px){
.types{grid-template-columns:1fr}
}
.tbox{border:1px solid var(--line); border-radius:12px; padding:16px; background:#fff}
.tbox .th{display:flex; align-items:center; gap:9px; font-weight:700; font-size:1.02em}
.tbox .th .e{font-size:22px}
.tbox p{margin:8px 0 0; font-size:.92em; color:var(--muted)}
.tbox .tags{margin-top:9px; display:flex; gap:6px; flex-wrap:wrap}
.tbox .tags span{font-size:.74em; background:var(--bg); color:var(--muted); padding:2px 8px; border-radius:8px; font-weight:600}
.newtag{display:inline-block; font-size:.62em; font-weight:700; letter-spacing:.4px; text-transform:uppercase; background:#dcfce7; color:#166534; border:1px solid #bbf7d0; border-radius:6px; padding:2px 7px; margin-left:4px; vertical-align:middle}
.tc.exams.active{border-color:#f59e0b; box-shadow:0 0 0 3px rgba(245,158,11,.18)}
.modesec{border:1px solid #e2e8f0; border-radius:10px; padding:10px 12px; margin:12px 0}
.modehead{display:flex; gap:10px; align-items:flex-start}
.modehead strong{display:block; font-size:.92em}
.modehead small, .chooser small{display:block; color:#64748b; font-size:.78em; line-height:1.4}
.mi{font-size:1.3em; line-height:1}
.hxrow{display:flex; align-items:center; gap:10px; padding:6px 8px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:6px; font-size:.84em; margin-top:8px}
.hxedit{background:#fff; color:#2563eb; border:1px solid #93c5fd; border-radius:6px; padding:3px 12px; font-weight:600; font-size:.9em}
.chooser{display:flex; gap:12px; align-items:flex-start; border:1px solid var(--line2); border-radius:10px; padding:12px 14px; margin:8px 0; text-align:left}
.chooser strong{display:block}
.chooser.sel{border-color:var(--blue); box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.prow{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:6px; font-size:.88em}
.pn{color:var(--soft); font-size:.9em}
.pside{flex:1; display:flex; gap:6px; align-items:center; min-width:180px}
.pside .inp{flex:1}
.pthumb{width:40px; height:40px; border-radius:6px; border:1px solid var(--line2); display:inline-flex; align-items:center; justify-content:center; font-size:22px; background:#fef9c3; flex-shrink:0}
.pbtn{display:inline-block; border:1px solid var(--line2); background:#fff; color:#475569; border-radius:6px; padding:3px 9px; font-size:.84em; white-space:nowrap}
.sitem{border:1px solid var(--line); border-radius:8px; padding:10px 12px; margin-bottom:8px; background:#fff}
.sh{display:flex; gap:14px; align-items:center; flex-wrap:wrap; margin-bottom:8px; font-size:.86em}
