:root{--bg:#f5f7fb;--surface:#ffffff;--surface-strong:#ffffff;--surface-dark:#111827;--text:#111827;--muted:#475569;--line:#cbd5e1;--primary:#1d4ed8;--primary-strong:#1e3a8a;--secondary:#6d28d9;--gold:#334155;--success:#16a34a;--warning:#d97706;--danger:#dc2626;--radius-xl:16px;--radius-lg:12px;--radius-md:8px;--shadow:0 1px 2px rgba(15,23,42,0.05),0 8px 24px rgba(15,23,42,0.08)}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{font-family:Pretendard Variable,Pretendard,SUIT,Noto Sans KR,system-ui,sans-serif;color:var(--text);background:radial-gradient(circle at top left,rgba(29,78,216,.14),transparent 22%),radial-gradient(circle at right 10%,rgba(109,40,217,.12),transparent 18%),linear-gradient(180deg,#eef2ff,#f5f7fb 52%,#ffffff)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.dashboard-shell,.site-shell{width:min(1380px,calc(100vw - 28px));margin:0 auto;padding:18px 0 44px}.site-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:16px 18px;border-radius:16px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow)}.site-header.compact{margin-bottom:22px}.brand-lockup,.card-button-row,.chip-row,.code-chip-row,.header-actions,.hero-pill-row,.inline-meta,.tag-row{display:flex;flex-wrap:wrap;gap:12px}.inline-form{flex:1 1 180px}.brand-lockup{align-items:center}.brand-badge{width:72px;height:72px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(135deg,#1d4ed8,#6d28d9);color:#ffffff;font-weight:800;letter-spacing:.08em}.brand-badge.gold{background:linear-gradient(135deg,#334155,#64748b);color:#ffffff}.eyebrow{margin:0 0 6px;color:var(--muted);font-size:.76rem;letter-spacing:.18em;text-transform:uppercase}.brand-title,h2,h3{margin:0}.brand-title{font-size:1.45rem}.chip-link,.primary-link,.soft-pill,.status-badge{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 16px;border-radius:9999px;border:1px solid var(--line);background:#ffffff;font-weight:700}.primary-link{background:linear-gradient(135deg,var(--primary),var(--primary-strong));color:#ffffff;border-color:rgba(29,78,216,.22)}.chip-link.is-active{background:rgba(29,78,216,.12);color:var(--primary-strong);border-color:rgba(29,78,216,.22)}.notice-bar{margin:18px 0 0;padding:14px 18px;border-radius:12px;background:#dbeafe;border:1px solid #93c5fd;color:#1e3a8a;font-weight:600}.hero-card{margin-top:32px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);gap:24px;padding:28px;border-radius:16px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);overflow:visible}.landing-hero{align-items:start}.landing-shell{pointer-events:none}.hero-side-home{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:14px}.profile-card-home{grid-column:1/-1}.page-hero{margin-top:22px;padding:20px;display:grid;gap:14px;border-radius:16px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow)}.hero-copy,.hero-side,.list-stack,.mini-panel,.page-intro,.queue-card,.request-panel,.stack-blocks,.stack-form,.surface-card{display:grid;gap:14px;align-content:start}.hero-copy-home{gap:12px}.hero-copy h2{margin:0;font-size:clamp(2.8rem,5vw,4.6rem);line-height:1.05;letter-spacing:-.06em;max-width:12ch}.hero-copy-subtitle{color:var(--muted);font-size:.95rem;line-height:1.6;padding-bottom:8px}.card-copy,.hero-text,.info-card p,.profile-card p,.request-panel p{margin:0;color:var(--muted);line-height:1.75}.auth-grid,.dashboard-grid,.entry-grid,.hero-density-grid,.hero-mini-grid,.home-entry-grid,.metric-grid,.metric-strip,.request-grid,.site-section-grid,.split-grid{display:grid;gap:18px}.hero-density-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.entry-grid,.hero-mini-grid,.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-entry-grid{margin-top:4px}.site-section-grid{margin-top:22px;grid-template-columns:repeat(3,minmax(0,1fr))}.split-grid{margin-top:22px;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr)}.board-card,.info-card,.metric-card,.mini-panel,.profile-card,.queue-card,.request-panel,.surface-card{padding:18px;border-radius:12px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow)}.assignment-panel{display:grid;gap:20px;min-height:360px;padding:24px}.assignment-panel--student{gap:18px;min-height:340px}.assignment-copy{display:grid;gap:12px;min-width:0;min-height:96px}.assignment-student-row,.assignment-subline-row,.assignment-title-row{display:block}.assignment-student,.assignment-subline span,.assignment-title{min-width:0;word-break:break-word}.assignment-title{line-height:1.3;font-size:1.02rem}.assignment-subline,.assignment-subline-row{display:grid;gap:2px;color:var(--muted);font-size:.92rem}.assignment-student{color:var(--muted);font-size:.88rem}.assignment-meta-row{display:flex;justify-content:flex-start}.assignment-detail-grid{display:grid;gap:10px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:#f8fafc}.assignment-detail-item{display:grid;gap:4px}.assignment-detail-item span{color:var(--muted);font-size:.84rem}.assignment-detail-item strong{min-width:0;word-break:break-word;line-height:1.5;font-size:.95rem}.assignment-panel .review-button{align-self:stretch;width:100%;min-height:50px;padding:0 22px;font-size:.82rem;letter-spacing:0;white-space:nowrap}.whiteboard-shell{display:grid;gap:14px;padding:18px;border-radius:12px;border:1px solid var(--line);background:var(--surface)}.whiteboard-head{display:grid;gap:12px;align-items:start}.whiteboard-title{display:grid;gap:4px}.whiteboard-readonly-banner{padding:10px 14px;border-radius:12px;border:1px solid rgba(217,72,65,.18);background:rgba(217,72,65,.08);color:#b42318;font-size:.88rem;font-weight:700}.whiteboard-reference{display:grid;gap:10px;padding:14px;border-radius:18px;border:1px solid var(--line);background:linear-gradient(180deg,#fffdf8,#fbf6ed)}.whiteboard-reference-head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.whiteboard-reference-head strong{font-size:.95rem}.whiteboard-reference-head span{color:var(--muted);font-size:.84rem}.whiteboard-reference-image-link{display:block;border-radius:14px;overflow:hidden;border:1px solid rgba(107,114,128,.18);background:#fff}.whiteboard-reference-image{display:block;width:100%;max-height:260px;object-fit:contain;background:#ffffff}.whiteboard-reference-empty{padding:18px;border-radius:14px;border:1px dashed var(--line);background:rgba(255,255,255,.7);color:var(--muted);font-size:.88rem}.board-control-box{display:grid;gap:10px;padding:14px;border-radius:12px;border:1px solid var(--line);background:#f8fafc}.whiteboard-canvas{width:100%;min-height:420px;border-radius:24px;border:1px solid var(--line);background:#f7f1e7;touch-action:none}.whiteboard-canvas.is-locked{pointer-events:none;opacity:.95;filter:saturate(.9)}.board-color-row button:disabled,.board-tools button:disabled{cursor:not-allowed;opacity:.55}.board-color-row,.board-tools{display:flex;flex-wrap:wrap;gap:10px}.board-tools{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.board-tools .chip-link{width:100%;white-space:nowrap;font-size:.84rem;letter-spacing:-.02em}.classroom-shell{position:relative}.voice-dock{position:fixed;right:18px;bottom:18px;z-index:40;width:min(320px,calc(100vw - 36px));display:grid;gap:8px;padding:14px;border-radius:16px;border:1px solid var(--line);background:#ffffff;box-shadow:var(--shadow)}.voice-button{width:100%;min-height:54px;touch-action:manipulation}.voice-button.recording{animation:voicePulse 1.2s ease-in-out infinite}.voice-help{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:.82rem}.voice-help span{padding:4px 8px;border-radius:9999px;background:#f8fafc;border:1px solid var(--line)}.voice-player{width:100%;margin-top:8px}.classroom-message-row{align-items:start}.classroom-message-copy{display:grid;gap:8px;min-width:0;width:100%}.classroom-file-upload{display:grid;gap:10px;padding:14px;border-radius:14px;border:1px solid var(--line);background:#f8fafc}.classroom-file-upload-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.classroom-file-upload-head strong{display:block;font-size:.96rem}.classroom-file-upload-foot small,.classroom-file-upload-foot span,.classroom-file-upload-head small{color:var(--muted)}.classroom-file-upload-body{display:grid;gap:10px}.classroom-file-upload-foot{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;font-size:.86rem}.file-input{width:100%;padding:12px;border-radius:12px;border:1px dashed var(--line);background:#ffffff}.classroom-attachment-image-link{display:block;max-width:100%}.classroom-attachment-image{width:100%;max-height:220px;object-fit:cover;border-radius:12px;border:1px solid var(--line);box-shadow:var(--shadow-sm)}.classroom-attachment-link{justify-content:flex-start}@keyframes voicePulse{0%{box-shadow:0 0 0 0 rgba(249,115,22,.28)}70%{box-shadow:0 0 0 12px rgba(249,115,22,0)}to{box-shadow:0 0 0 0 rgba(249,115,22,0)}}.board-color-row{justify-content:flex-start}.color-dot{width:30px;height:30px;border:2px solid rgba(20,30,50,.18);border-radius:999px;box-shadow:0 8px 16px rgba(21,36,65,.12)}.card-head,.mini-panel-head,.request-panel-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.request-panel-top>.card-copy-block{flex:1 1 auto}.list-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:#ffffff}.list-row strong,.queue-card strong{font-size:.96rem}.list-row span,.metric-card span,.metric-panel span,.queue-card small,.queue-card span,.stacked-block small,.stacked-block span{color:var(--muted)}.metric-card strong,.metric-panel strong{font-size:2.4rem}.auth-grid{margin-top:22px;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start}.surface-card{height:100%}.request-panel,.surface-card{align-content:start}.entry-card{min-height:112px;padding:16px}.entry-card .card-head{min-height:0}.entry-card .button-link{min-height:46px}.metric-card{min-height:106px;padding:18px 20px;align-content:start}.metric-card span{display:block;margin-bottom:10px;line-height:1.2;white-space:nowrap}.metric-card strong{display:block;line-height:1}.empty-hint{color:var(--muted);font-size:.82rem;line-height:1.45}.profile-card{gap:10px;min-height:136px}.blank-panel{min-height:120px;background:#f8fafc}.blank-panel-card{min-height:196px}.list-row.empty-row{min-height:48px;justify-content:flex-start;color:var(--muted);font-size:.9rem}.hero-side .blank-panel{min-height:164px}.profile-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.stacked-block.compact{padding:10px 12px;gap:4px}.stacked-block{display:grid;gap:6px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:#f8fafc}.field{display:grid;gap:8px}.field span{font-size:.92rem;font-weight:700}input,select,textarea{width:100%;padding:13px 14px;border-radius:14px;border:1px solid var(--line);background:#ffffff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:none;border-color:rgba(249,115,22,.42);box-shadow:0 0 0 4px rgba(249,115,22,.1)}.action-button{min-height:48px;border:none;border-radius:16px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:12px;font-weight:800;transition:transform .18s ease}.button-link,.wide-button{width:100%}.action-button:hover,.chip-link:hover,.primary-link:hover{transform:translateY(-1px)}.action-button.primary{background:linear-gradient(135deg,var(--primary),var(--primary-strong));color:#ffffff}.action-button.secondary{background:linear-gradient(135deg,#f1f5f9,#ffffff)}.action-button.ghost,.action-button.secondary{color:var(--text);border:1px solid var(--line)}.action-button.ghost{background:transparent}.action-button.small{min-height:40px;padding:0 14px;border-radius:14px}.google-mark{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#ffffff;color:#4285f4;font-weight:900}.google-auth-stack{display:grid;gap:10px;margin-bottom:16px}.auth-status{margin:0;font-size:.9rem;color:var(--muted)}.status-badge{min-height:36px;padding:0 14px;font-size:.84rem}.status-badge.success{background:rgba(22,163,74,.12);color:#15803d}.status-badge.warning{background:rgba(217,119,6,.12);color:#b45309}.status-badge.info{background:rgba(37,99,235,.12);color:#1d4ed8}.status-badge.danger{background:rgba(220,38,38,.12);color:#b91c1c}.code-chip,.soft-pill{min-height:36px;padding:0 14px;font-size:.88rem}.code-chip{display:inline-flex;align-items:center;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.84);font-weight:700}.dashboard-shell .metric-strip{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.metric-panel{gap:8px}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.panel-span-2{grid-column:span 2}.request-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.list-stack.compact,.stack-form.tight-form{gap:10px}.card-button-row.roomy{gap:14px;align-items:stretch}.session-drawer{display:grid;gap:14px}.session-drawer-summary{list-style:none;display:flex;justify-content:space-between;gap:14px;align-items:center;cursor:pointer}.session-drawer-summary::-webkit-details-marker{display:none}.session-drawer-summary strong{display:block;font-size:1rem}.session-drawer-summary span{display:block;color:var(--muted);font-size:.84rem}.session-drawer-chip{pointer-events:none}.session-drawer-body{display:grid;gap:10px}.session-drawer-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 16px;border-radius:14px;border:1px solid var(--line);background:#ffffff;color:inherit;text-decoration:none;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.session-drawer-row:hover{transform:translateY(-1px);border-color:rgba(31,59,115,.28);box-shadow:0 10px 24px rgba(15,23,42,.08)}.session-drawer-row .assignment-copy{gap:6px}.button-link{display:inline-flex}textarea{resize:vertical;min-height:96px}@media (max-width:1200px){.dashboard-shell .metric-strip,.hero-density-grid,.hero-mini-grid,.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1201px){.dashboard-shell,.site-shell{width:min(1440px,calc(100vw - 40px))}.hero-card{grid-template-columns:minmax(0,1.05fr) minmax(380px,.95fr);gap:28px;padding:32px}.hero-copy h2{font-size:clamp(3rem,4.4vw,5.1rem)}.hero-side-home{gap:16px}.admin-grid{grid-template-columns:minmax(0,1.05fr) minmax(320px,.85fr) minmax(320px,.85fr)}.student-grid{grid-template-columns:minmax(300px,.88fr) minmax(0,1.24fr) minmax(280px,.88fr)}.classroom-grid{grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr)}.classroom-grid .panel-span-2{grid-column:auto}.admin-grid .panel-span-2{grid-column:span 2}}@media (min-width:821px) and (max-width:1200px){.dashboard-shell,.site-shell{width:min(100vw - 24px,1240px);padding-top:14px}.hero-card{grid-template-columns:1fr;gap:18px;padding:24px}.auth-grid,.entry-grid,.hero-side-home,.request-grid,.site-section-grid,.split-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-side-home{gap:12px}.profile-card-home{grid-column:1/-1}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-grid .panel-span-2{grid-column:1/-1}.student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-grid .panel-span-2,.student-grid>:first-child,.student-grid>:last-child{grid-column:1/-1}.classroom-grid{grid-template-columns:1fr}.classroom-grid .panel-span-2{grid-column:auto}.admin-grid,.classroom-grid,.student-grid{align-items:start}.dashboard-shell .metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.site-section-grid{margin-top:18px}.admin-grid .request-grid,.student-grid .request-grid{grid-template-columns:1fr}.hero-copy h2{font-size:clamp(2.6rem,4.7vw,3.8rem)}}@media (max-width:820px){.dashboard-shell,.site-shell{width:min(100vw - 16px,100%);padding-top:10px}.auth-grid,.dashboard-grid,.dashboard-shell .metric-strip,.entry-grid,.hero-card,.hero-density-grid,.hero-mini-grid,.metric-grid,.request-grid,.site-header,.site-section-grid,.split-grid{grid-template-columns:1fr}.panel-span-2{grid-column:auto}.hero-side-home{grid-template-columns:1fr}.profile-card-home{grid-column:auto}.card-head,.header-actions,.list-row,.mini-panel-head,.request-panel-top,.site-header,.whiteboard-head{flex-direction:column;align-items:flex-start}.voice-dock{right:10px;left:10px;bottom:10px;width:auto}.board-tools{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-copy h2{font-size:2.45rem;max-width:none}.hero-copy-subtitle{font-size:.9rem}.whiteboard-reference-image{max-height:210px}}