:root{--bg:#f5f6fa;--ink:#171a26;--muted:#6c7485;--line:#e3e7ef;--purple:#6554df;--red:#c4415c;--green:#18855b;--panel:#fff;--code:#111725}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,Pretendard,"Noto Sans KR",system-ui,-apple-system,sans-serif}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}.review-shell{max-width:1180px;margin:auto;padding:0 34px 60px}.review-nav{height:82px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px}.brand>span{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(135deg,#6a54df,#d14f70);color:#fff;font-weight:900}.brand strong{font-size:15px}.review-nav nav{display:flex;align-items:center;gap:5px}.review-nav nav>a{padding:8px 10px;border-radius:9px;font-size:11px;font-weight:800;color:#697285}.review-nav nav>a:hover,.review-nav nav>a.active{background:#fff;color:#363d50}.review-hero{margin:34px 0 18px;border-radius:23px;padding:31px 33px;color:#fff;background:linear-gradient(135deg,#24233a,#4a3879 62%,#8d3e68);display:grid;grid-template-columns:1fr 190px;gap:24px;align-items:center}.eyebrow{font-size:9px;letter-spacing:.16em;font-weight:900;color:#d8d0ff}.review-hero h1{font-size:29px;letter-spacing:-.035em;margin:9px 0 8px}.review-hero h1 em{font-style:normal;color:#f1c4ff}.review-hero p{font-size:12px;line-height:1.7;color:#d8d8e7;margin:0;max-width:680px}.hero-stat{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);border-radius:17px;padding:18px;text-align:center}.hero-stat span,.hero-stat small{display:block;font-size:10px;color:#d8dbeb}.hero-stat strong{display:block;font-size:34px;margin:4px 0}.review-toolbar{display:flex;gap:12px;justify-content:space-between;margin:18px 0}.review-toolbar input{flex:1;border:1px solid var(--line);background:#fff;border-radius:11px;padding:11px 13px;outline:none}.filters{display:flex;gap:7px}.filters select{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 10px;color:#515a6d;font-size:11px}.review-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}.review-guide>div{background:#eceef4;border-radius:12px;padding:12px 14px}.review-guide strong{display:block;font-size:10px;color:#555d70}.review-guide span{display:block;font-size:10px;line-height:1.55;color:#7b8394;margin-top:3px}.review-list{display:flex;flex-direction:column;gap:13px}.review-card{background:#fff;border:1px solid var(--line);border-radius:17px;overflow:hidden;box-shadow:0 5px 16px rgba(33,39,65,.035)}.review-card.mastered{opacity:.72}.card-head{display:flex;gap:13px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line)}.type-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none;font-weight:900;background:#f0edff;color:#5b49d4}.review-card.problem .type-icon{background:#fff0f2;color:#b43852}.card-title{flex:1;min-width:0}.card-title .meta{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:5px}.tag{font-size:9px;font-weight:900;border-radius:999px;padding:4px 7px;background:#f0f2f6;color:#657084}.tag.wrong{background:#fff0f2;color:#a9364b}.tag.confusing{background:#f1efff;color:#5d49c7}.tag.done{background:#e8f7f0;color:#16704c}.card-title h2{font-size:14px;margin:0 0 4px}.card-title p{font-size:10px;color:#7c8597;margin:0}.source-link{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 9px;font-size:10px;font-weight:800;color:#555f73;white-space:nowrap}.card-body{padding:15px 18px}.excerpt{font-size:11px;color:#424a5a;line-height:1.7;white-space:pre-wrap;max-height:220px;overflow:auto;background:#f7f8fb;border-radius:10px;padding:11px 12px}.code-excerpt{margin-top:10px;background:var(--code);color:#e9edf7;border-radius:10px;padding:12px;max-height:260px;overflow:auto;font:10px/1.55 "Cascadia Code",Consolas,monospace;white-space:pre}.memo-label{display:block;margin:13px 0 6px;font-size:9px;font-weight:900;color:#737d90;letter-spacing:.06em}.memo{width:100%;min-height:72px;border:1px solid var(--line);border-radius:10px;padding:10px 11px;resize:vertical;font-size:11px;line-height:1.55;outline:none}.memo:focus{border-color:#a9a0eb;box-shadow:0 0 0 3px rgba(100,84,223,.08)}.card-actions{display:flex;gap:7px;padding:0 18px 15px}.card-actions button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 9px;font-size:10px;font-weight:800;cursor:pointer}.card-actions .master{background:#eaf7f1;color:#176b4b;border-color:#d5eee3}.card-actions .reactivate{background:#f0edff;color:#5b49c8}.card-actions .delete{margin-left:auto;color:#a53c50}.empty{background:#fff;border:1px dashed #d3d8e3;border-radius:16px;padding:50px;text-align:center;color:#828b9d;font-size:12px}.toast{position:fixed;right:23px;bottom:23px;background:#151925;color:#fff;border-radius:10px;padding:10px 13px;font-size:10px;opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}@media(max-width:800px){.review-shell{padding:0 17px 40px}.review-nav nav>a:not(.active){display:none}.review-hero{grid-template-columns:1fr;padding:25px}.review-hero h1{font-size:24px}.hero-stat{text-align:left}.hero-stat strong{display:inline-block;margin-right:8px}.review-toolbar{flex-direction:column}.filters{overflow:auto}.review-guide{grid-template-columns:1fr}.card-head{flex-wrap:wrap}.source-link{margin-left:51px}}


/* ===== Deployment QA hardening (2026-08-18) ===== */
html,body{max-width:100%;overflow-x:hidden}
.review-shell,.review-nav,.review-hero>div,.review-toolbar,.filters,.review-card,.card-title,.card-body{min-width:0}
.review-hero h1,.review-hero p,.card-title h2,.card-title p,.excerpt,.memo-label{overflow-wrap:anywhere;word-break:break-word}
.excerpt{max-height:none;overflow:visible}
.code-excerpt{max-width:100%;-webkit-overflow-scrolling:touch}
.card-actions{flex-wrap:wrap}
@media(max-width:800px){
  .review-nav{gap:10px}
  .review-nav .brand{min-width:0}
  .review-nav .brand strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .review-toolbar input,.filters select,.memo{font-size:16px}
  .review-toolbar input,.filters select{min-height:46px}
  .filters{display:grid;grid-template-columns:1fr;gap:8px;overflow:visible}
  .filters select{width:100%}
  .source-link{margin-left:0;width:100%;min-height:44px;display:flex;align-items:center;justify-content:center}
  .card-head{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px 12px;padding:15px 14px}
  .type-icon{grid-column:1;grid-row:1}
  .card-title{grid-column:2;grid-row:1}
  .source-link{grid-column:1/-1;grid-row:2}
  .card-body{padding:14px}
  .excerpt{font-size:12px;line-height:1.7}
  .code-excerpt{font-size:12px;max-height:360px}
  .memo{min-height:110px;line-height:1.55}
  .card-actions{padding:0 14px 14px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .card-actions button{min-height:44px;font-size:12px;padding:10px}
  .card-actions .delete{margin-left:0}
  .toast{left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));text-align:center}
}
@media(max-width:380px){.card-actions{grid-template-columns:1fr}}
