:root{--bg:#f5f6fa;--surface:#fff;--surface-2:#f0f1f6;--text:#1c1e26;--muted:#6b7080;--border:#e2e4ec;--primary:#4f46e5;--primary-text:#fff;--primary-soft:#eef0ff;--good:#15803d;--good-soft:#e7f6ec;--warn:#b45309;--warn-soft:#fdf3e3;--bad:#c2410c;--bad-soft:#fdece6;--danger:#dc2626;--radius:14px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#111318;--surface:#1a1d24;--surface-2:#232733;--text:#e9eaf0;--muted:#9aa0b0;--border:#2d3240;--primary:#818cf8;--primary-text:#111318;--primary-soft:#262a45;--good:#4ade80;--good-soft:#17301f;--warn:#fbbf24;--warn-soft:#332914;--bad:#fb923c;--bad-soft:#3a2218;--danger:#f87171;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;word-break:keep-all;margin:0;font-family:system-ui,-apple-system,Apple SD Gothic Neo,Malgun Gothic,Noto Sans KR,sans-serif;font-size:16px;line-height:1.5}h1,h2{margin:0;line-height:1.3}h1{font-size:1.4rem}h2{font-size:1.05rem}ul,ol{margin:0;padding-left:1.2rem}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.stack{flex-direction:column;gap:14px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.page{max-width:560px;padding:max(16px, env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom));margin:0 auto}.page--wide{max-width:1100px}.page__header{align-items:center;gap:10px;margin:8px 0 18px;display:flex}.page__titles{flex:1;min-width:0}.page__titles p{margin:2px 0 0;font-size:.9rem}.page__back{background:var(--surface);width:40px;height:40px;color:var(--text);box-shadow:var(--shadow);border-radius:50%;flex:none;place-items:center;font-size:1.6rem;text-decoration:none;display:grid}.page__actions{gap:6px;display:flex}.home{flex-direction:column;justify-content:center;min-height:100svh;padding-bottom:14svh;display:flex}.home__hero{text-align:center;margin-bottom:28px}.home__logo{width:min(208px,56vw);height:auto;margin:0 auto 20px;display:block}@media (prefers-color-scheme:dark){.home__logo{background:#fff;border-radius:24px;padding:16px}}.home__hero h1{font-size:2rem}.home__eyebrow{color:var(--primary);letter-spacing:.05em;margin:0 0 4px;font-weight:700}.home__choices{flex-direction:column;gap:14px;display:flex}.choice{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);color:var(--text);align-items:center;gap:14px;padding:20px 18px;text-decoration:none;transition:border-color .15s,transform .15s;display:flex}.choice:hover,.choice:focus-visible{border-color:var(--primary)}.choice:active{transform:scale(.99)}.choice__text{flex-direction:column;flex:1;gap:2px;display:flex}.choice__text strong{font-size:1.15rem}.choice__text span{color:var(--muted);font-size:.9rem}.choice__arrow{color:var(--muted);font-size:1.6rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.card__head h2{align-items:center;gap:8px;display:flex}.card__actions{flex-wrap:wrap;gap:6px;display:flex}.grid-2{gap:14px;display:grid}@media (width>=760px){.grid-2{grid-template-columns:1fr 1fr}}.field{flex-direction:column;gap:6px;display:flex}.field__label{font-size:.92rem;font-weight:600}.field__hint{color:var(--muted);font-size:.8rem}.field__error{color:var(--danger);font-size:.8rem;font-weight:600}.input--error{border-color:var(--danger)}.input{border:1px solid var(--border);background:var(--surface);width:100%;min-height:48px;color:var(--text);font:inherit;border-radius:10px;padding:10px 12px}.input:focus{outline:2px solid var(--primary);outline-offset:1px;border-color:#0000}.input:disabled{background:var(--surface-2);color:var(--muted)}input[type=file].input{flex:1;min-width:0;padding:10px}.select{display:block;position:relative}.select .input{appearance:none;cursor:pointer;min-height:60px;padding:14px 48px 14px 16px;font-size:1.15rem;font-weight:600}.select .input:disabled{cursor:not-allowed}.select:after{content:"▾";color:var(--muted);pointer-events:none;font-size:1.3rem;position:absolute;top:50%;right:16px;transform:translateY(-50%)}.btn{min-height:48px;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;padding:0 18px;font-weight:700;text-decoration:none;transition:opacity .15s;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--primary);color:var(--primary-text)}.btn--secondary{background:var(--primary-soft);color:var(--primary)}.btn--danger{background:var(--danger);color:#fff}.btn--ghost{color:var(--muted);background:0 0;min-height:40px;padding:0 10px;font-weight:600}.btn--ghost:hover{color:var(--text);background:var(--surface-2)}.stack>.btn,.sticky-actions .btn{width:100%}.alert{border-radius:10px;padding:12px 14px;font-size:.92rem}.alert ul{margin-top:6px}.alert--error{background:var(--bad-soft);color:var(--bad)}.alert--info{background:var(--primary-soft);color:var(--primary)}.alert--success{background:var(--good-soft);color:var(--good)}.alert--warning{background:var(--warn-soft);color:var(--warn)}.badge{white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.78rem;font-weight:700;display:inline-block}.badge--neutral{background:var(--surface-2);color:var(--muted)}.badge--good{background:var(--good-soft);color:var(--good)}.badge--warn{background:var(--warn-soft);color:var(--warn)}.badge--bad{background:var(--bad-soft);color:var(--bad)}.badge--accent{background:var(--primary-soft);color:var(--primary)}.progress{align-items:center;gap:10px;display:flex}.progress__bar{background:var(--surface-2);border-radius:999px;flex:1;height:8px;overflow:hidden}.progress__bar span{background:var(--primary);border-radius:inherit;height:100%;transition:width .3s;display:block}.progress__text{color:var(--muted);white-space:nowrap;font-size:.85rem}.team-list{flex-direction:column;gap:10px;padding:0;list-style:none;display:flex}.team{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.team--open{border-color:var(--primary)}.team__summary{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:14px 16px;display:flex}.team__names{flex-direction:column;flex:1;min-width:0;display:flex}.team__names strong{overflow-wrap:anywhere}.team__names .muted{font-size:.85rem}.team__meta{flex:none;align-items:center;gap:8px;display:flex}.team__total{color:var(--primary);font-weight:700}.score-editor{flex-direction:column;gap:12px;padding:0 16px 16px;display:flex}.score-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.score-grid .input{text-align:center;font-size:1.15rem;font-weight:700}.sticky-actions{padding:12px 0 calc(12px + env(safe-area-inset-bottom));background:linear-gradient(transparent, var(--bg) 25%);flex-direction:column;gap:8px;display:flex;position:sticky;bottom:0}.done-mark{background:var(--good-soft);width:72px;height:72px;color:var(--good);border-radius:50%;place-items:center;margin:24px auto 0;font-size:2.2rem;font-weight:700;display:grid}.stack.center{align-items:center}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px;font-weight:700;text-decoration:none}.tab--active{color:var(--primary);border-bottom-color:var(--primary)}.segmented{gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.segment{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:10px;flex-direction:column;flex:none;align-items:flex-start;padding:8px 14px;font-weight:700;display:flex}.segment--active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.roster{gap:10px;display:grid}@media (width>=900px){.roster{grid-template-columns:1fr 1fr}}.roster__team{border:1px solid var(--border);border-radius:10px;padding:10px 12px}.roster__head{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.roster__student{border-top:1px dashed var(--border);flex-wrap:wrap;align-items:center;gap:4px 8px;padding:6px 0;display:flex}.roster__student>span:first-child{flex:1;min-width:140px}.roster__badges{gap:4px;display:flex}.roster__actions{flex-wrap:wrap;width:100%;display:flex}.roster__actions .btn{min-height:34px;font-size:.85rem}.roster__student--judge>span:first-child{font-weight:700}.admin-link{margin-top:28px}.admin-link a{color:var(--muted)}details summary{cursor:pointer;color:var(--primary);margin-bottom:8px;font-weight:600}.progress-field{flex-direction:column;gap:8px;display:flex}.progress-field__head{flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.progress-field__head .progress{flex:1;min-width:200px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--surface-2);color:var(--muted);border-radius:999px;padding:3px 9px;font-size:.8rem;font-weight:600}.chip--done{background:var(--good-soft);color:var(--good)}.summary{gap:10px;margin-bottom:8px;display:grid}@media (width>=760px){.summary{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}.summary__item{flex-direction:column;gap:2px;display:flex}.table-wrap{margin:0 -4px;overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:.9rem}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:9px 6px}.table th{color:var(--muted);white-space:nowrap;font-size:.8rem;font-weight:700}.table .right{text-align:right;white-space:nowrap}.table .center{text-align:center}.row--tied td{background:var(--warn-soft)}.podium{flex-direction:column;gap:6px;margin-bottom:12px;padding:0;list-style:none;display:flex}.podium li{background:var(--surface-2);border-radius:10px;grid-template-columns:auto 1fr;gap:0 10px;padding:8px 10px;display:grid}.podium__rank{background:var(--primary-soft);min-width:44px;color:var(--primary);text-align:center;border-radius:8px;grid-row:span 2;align-self:center;padding:4px 0;font-weight:800}.vote-bar{justify-content:flex-end;min-width:64px;display:inline-flex;position:relative}.vote-bar__fill{background:var(--primary-soft);border-radius:999px;height:6px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.vote-bar__value{font-weight:700;position:relative}.checkbox{border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:8px;min-height:40px;padding:4px 12px 4px 8px;font-weight:600;display:inline-flex}.checkbox input{width:20px;height:20px;accent-color:var(--primary)}.checkbox:has(input:checked){border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.export-box{background:var(--surface-2);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.export-box__label{color:var(--muted);font-size:.85rem;font-weight:700}.export-box__buttons{grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;display:grid}.export-box__buttons .btn{width:100%;min-height:52px;font-size:1.05rem}
