:root {
  font-family:'Trebuchet MS',Verdana,Arial,sans-serif;
  color:#423127;background:#f8dccc;color-scheme:light;
  --paper:#fffaf0;--teal:#086e70;--ink:#584235;--muted:#756052;--line:#d7c8b7;--accent:#efd18c;
  --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box}
body{margin:0;min-height:100svh;border-top:5px solid var(--ink)}
button,input,textarea,select{font:inherit;color:inherit}
button,a,input,textarea,select,summary{touch-action:manipulation}
button{cursor:pointer}button:disabled{opacity:.65;cursor:wait}
a{color:var(--teal)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--teal);outline-offset:4px}
.mast{width:min(1040px,calc(100% - 48px));margin:auto;min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.wordmark{font-size:1.4rem;font-weight:bold;letter-spacing:-.055em;display:flex;align-items:center;gap:11px}
.wordmark:before{content:'';width:14px;height:18px;background:var(--teal);border:2px solid var(--ink);border-radius:2px;box-shadow:3px 3px 0 var(--ink);transform:rotate(-5deg)}
#classLabel{font-size:.83rem;color:#665045;text-align:right;line-height:1.4}
.paper{width:min(820px,calc(100% - 48px));margin:20px auto 22px;border:2px solid var(--ink);border-top:7px solid var(--teal);border-radius:12px;background:var(--paper);box-shadow:6px 7px 0 var(--ink);padding:27px 34px 25px;overflow:clip}
.paper-top{display:flex;align-items:center;gap:13px;padding-bottom:20px;border-bottom:1px solid var(--line);margin-bottom:24px}
.book-mark{width:42px;height:42px;flex:0 0 42px;color:var(--ink)}
.title{font-size:1.07rem;letter-spacing:-.035em;margin:0 0 4px;font-weight:bold}
.sub{font-size:.81rem;margin:0;color:var(--muted)}
.preview{font-size:.75rem;color:var(--muted);margin:0 0 20px;padding:0 0 12px;border-bottom:1px dashed var(--line);line-height:1.5}
.screen{position:relative;min-width:0}
h1.question{font-size:clamp(1.35rem,2.65vw,1.85rem);line-height:1.24;letter-spacing:-.04em;margin:0 0 18px;max-width:690px;text-wrap:pretty}
h1:focus{outline:none}
.hint{font-size:.87rem;line-height:1.5;color:var(--muted);margin:0 0 15px;text-wrap:pretty}
.intro{font-size:1rem;line-height:1.65;max-width:650px}.intro p{margin:0 0 17px}.intro p:first-child{font-size:1.08rem;color:var(--ink)}
.step-progress{margin:0 0 23px}
.progress-label{display:flex;justify-content:space-between;gap:10px;font-size:.78rem;margin:0 0 10px;color:var(--teal);font-weight:bold}
.progress-label small{font-size:inherit;font-weight:normal;color:var(--muted)}
.progress{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.progress-track{height:5px;background:#e5dacc;border-radius:6px;overflow:hidden}
.progress-fill{display:block;width:100%;height:100%;background:var(--teal);transform:scaleX(0);transform-origin:left center;border-radius:6px}
fieldset{border:0;padding:0;margin:0;min-width:0}
.answers{display:grid;gap:9px}
.answers.multi,.answers.compact{grid-template-columns:1fr 1fr}
.answer{position:relative;display:flex;align-items:center;gap:13px;padding:13px 15px;min-height:51px;border:1.5px solid #af9987;border-radius:7px;cursor:pointer;background:#fffdf8;font-size:.97rem;line-height:1.35;overflow-wrap:anywhere;box-shadow:0 2px 0 #cabbac60}
.answer:has(input:checked){border-color:var(--teal);background:#e4efe6;box-shadow:inset 0 0 0 .5px var(--teal),0 2px 0 #bdd0c3}
.answer:has(input:focus-visible){outline:3px solid var(--teal);outline-offset:3px}
.answer input:focus-visible{outline:none}
input[type=radio],input[type=checkbox]{appearance:none;-webkit-appearance:none;display:grid;place-content:center;width:21px;height:21px;flex:0 0 21px;margin:0;border:1.5px solid #927c69;background:var(--paper);border-radius:50%;position:relative;cursor:pointer}
input[type=checkbox]{border-radius:4px}
input[type=radio]:after,input[type=checkbox]:after{content:'';width:7px;height:11px;border:solid white;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg) scale(0)}
input:checked{background:var(--teal);border-color:var(--teal)}
input:checked:after{transform:translateY(-1px) rotate(45deg) scale(1)}
.optional{display:block;font-size:.88rem;margin-top:18px}.optional>span{display:block;margin-bottom:8px}.optional small{color:var(--muted)}
textarea,input[type=text],select{width:100%;border:1.5px solid #af9987;border-radius:6px;background:#fffdf8;padding:12px}
textarea{resize:vertical;min-height:83px;line-height:1.5}
textarea:focus{border-color:var(--teal)}
.actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:25px;padding-top:20px;border-top:1px solid var(--line)}
.actions>span{font-size:.85rem;color:var(--muted)}
.btn{min-height:45px;border:1.5px solid var(--ink);border-radius:6px;padding:11px 21px;background:var(--paper);font-weight:bold;font-size:.92rem;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:9px;box-shadow:0 3px 0 #58423530}
.primary{background:var(--teal);color:#fffdf8;border-color:var(--teal);box-shadow:0 3px 0 #064e50}
.actions .primary{margin-left:auto;min-width:112px}
#back,#skipFollow{box-shadow:none;border-color:transparent;background:transparent;padding-left:8px;padding-right:8px}
#skipFollow{font-weight:normal;color:var(--muted);text-decoration:underline;text-underline-offset:4px}
.foot{margin:0 auto 26px;text-align:center;max-width:690px;font-size:.73rem;color:#6e584a;padding:0 24px;line-height:1.6}
.error{color:#8d3026;border-left:3px solid #a23c31;padding:10px 13px;background:#fbe4d9;border-radius:0 5px 5px 0;font-size:.9rem;line-height:1.45}
.detail{margin-top:16px;font-size:.88rem}.detail summary{cursor:pointer;color:var(--teal);padding:10px 0;min-height:44px}.detail .optional{margin-top:5px}
.review{border-bottom:1px solid var(--line);padding:16px 0;display:grid;grid-template-columns:1fr auto;gap:16px}.review h2{font-size:.93rem;margin:0;font-weight:normal;color:var(--muted)}.review p{margin:7px 0;line-height:1.5;white-space:pre-wrap;font-size:.95rem;overflow-wrap:anywhere}.review button{align-self:start;font-size:.78rem;padding:8px 12px;min-height:40px;box-shadow:none}.review small{display:block;color:var(--muted)}
.focus-picker legend{font-weight:bold;padding:0;margin:0 0 12px;font-size:.9rem}.focus-picker{margin-bottom:22px}.reason-title{font-size:1.05rem;margin:15px 0 12px}.focus-part{font-weight:bold;color:var(--teal);padding:10px 13px;border-left:3px solid var(--teal);background:#e4efe6;font-size:.94rem}
.done-mark{width:52px;height:52px;margin:7px 0 22px;display:block}.done-mark circle{fill:#e4efe6;stroke:var(--teal);stroke-width:1.5}.done-mark path{fill:none;stroke:var(--teal);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.sending:before{content:'';width:13px;height:13px;border:2px solid #ffffff60;border-top-color:white;border-radius:50%}
[hidden]{display:none!important}
@media(hover:hover){.answer:hover{border-color:var(--teal);background:#f0f4e9}.answer:has(input:checked):hover{background:#dceadd}.btn:hover{background:#efe7d9}.primary:hover{background:#075c5e}#back:hover,#skipFollow:hover{background:#f0e9dd}}
@media(prefers-reduced-motion:no-preference){
 .answer{transition:background 150ms,border-color 150ms,box-shadow 150ms,transform 150ms var(--ease)}
 .answer:active{transform:translateY(2px);box-shadow:none}
 .answer input:after{transition:transform 180ms var(--ease)}
 .answer input{transition:background 120ms,border-color 120ms}
 .btn{transition:transform 130ms var(--ease),box-shadow 130ms,background 130ms}
 .btn:active:not(:disabled){transform:translateY(3px);box-shadow:none}
 .detail[open]>.optional{animation:detail-in 180ms var(--ease)}
 .done-mark path{stroke-dasharray:40;animation:draw-check 450ms var(--ease) both}
 .sending:before{animation:turn 800ms linear infinite}
 @keyframes detail-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
 @keyframes draw-check{from{stroke-dashoffset:40}to{stroke-dashoffset:0}}
 @keyframes turn{to{transform:rotate(360deg)}}
}
@media(max-width:600px){
 body{border-top-width:4px}.mast{min-height:64px;width:calc(100% - 36px)}.wordmark{font-size:1.25rem}#classLabel{font-size:.75rem}
 .paper{width:calc(100% - 30px);margin:12px auto 20px;padding:21px 20px;border-radius:9px;box-shadow:4px 5px 0 var(--ink)}
 .paper-top{margin-bottom:21px;padding-bottom:17px}.title{font-size:1rem}.sub{font-size:.76rem}.book-mark{width:36px;height:36px;flex-basis:36px}
 .answers.multi,.answers.compact{grid-template-columns:1fr}.answer{padding:12px;min-height:49px;font-size:.95rem}.intro{font-size:.95rem}.intro p:first-child{font-size:1rem}
 .actions{margin-top:21px;padding-top:17px;gap:9px}.btn{padding:10px 16px}.actions .primary{min-width:100px}.preview{margin-bottom:17px}.foot{font-size:.7rem}
}
@media(max-width:370px){.paper{padding:18px 15px}.actions{gap:5px}.actions .btn{font-size:.85rem}.review{grid-template-columns:1fr}.review .btn{justify-self:start}}
@media(forced-colors:active){.answer input{appearance:auto;-webkit-appearance:auto}.answer input:after{display:none}.answer:has(input:checked){outline:2px solid Highlight}.progress-fill{background:Highlight}}

/* The outer page stays still; only long question/review content can overflow. */
html{height:100%;overflow:hidden}
body{height:var(--viewport-height,100dvh);min-height:0;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:12px;padding-bottom:max(10px,env(safe-area-inset-bottom))}
.mast{min-height:0;padding:15px 0 2px}
.paper{width:min(920px,calc(100% - 44px));min-height:0;height:100%;margin:0 auto;display:flex;flex-direction:column;padding:20px 28px 17px}
.paper>.preview,.paper>.paper-top,.paper>.step-progress{flex-shrink:0}
.preview{margin-bottom:12px;padding-bottom:8px}
.paper-top{padding-bottom:13px;margin-bottom:16px}
.step-progress{margin-bottom:16px}
.screen{flex:1;min-height:0;display:flex;flex-direction:column}
.screen-content{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ad9a86 transparent;padding:4px 7px 8px 4px;scroll-padding:10px}
.screen>.actions{flex-shrink:0;margin-top:12px;padding-top:13px}
.screen>.error{flex-shrink:0;margin:7px 0 0;padding:7px 11px}
.foot{margin:0 auto;max-width:920px;padding:1px 20px 0}
h1.question{font-size:clamp(1.3rem,2.3vw,1.65rem);margin-bottom:14px}
.answers{gap:8px}.answer{padding:11px 13px;min-height:46px}
.intro p{margin-bottom:14px}
@media(min-width:760px) and (max-height:760px){
 body{gap:9px}.mast{padding-top:10px}.paper{padding:15px 25px 12px}
 .paper-top{padding-bottom:9px;margin-bottom:11px}.book-mark{width:34px;height:34px;flex-basis:34px}
 .preview{padding-bottom:6px;margin-bottom:8px;font-size:.7rem}.step-progress{margin-bottom:12px}
 .answer{min-height:44px;padding:9px 12px;font-size:.92rem}.answers{gap:7px}
 .hint{margin-bottom:10px}.screen>.actions{margin-top:8px;padding-top:9px}
}
@media(max-width:600px){
 body{gap:10px}.mast{padding:10px 0 0}.paper{width:calc(100% - 28px);padding:15px 16px 12px;margin:0 auto}
 .paper-top{padding-bottom:10px;margin-bottom:12px}.book-mark{width:30px;height:30px;flex-basis:30px}
 .preview{margin-bottom:9px;font-size:.7rem}.step-progress{margin-bottom:12px}
 .foot{font-size:.65rem;line-height:1.35;padding:0 16px}.screen-content{padding-right:5px}
 .screen>.actions{margin-top:8px;padding-top:10px}.answer{min-height:46px}
}
@media(max-height:480px){
 body{gap:6px;padding-bottom:6px}.mast{padding-top:5px}.wordmark{font-size:1.05rem}.foot{display:none}
 .paper{padding-top:10px;padding-bottom:10px}.paper-top{padding-bottom:6px;margin-bottom:8px}.sub{display:none}
 .preview{margin-bottom:6px;padding-bottom:4px}.step-progress{margin-bottom:8px}.screen>.actions{padding-top:7px;margin-top:6px}
}

.focus-choice{margin:0 0 12px;border-left:3px solid var(--teal);padding-left:12px}.focus-choice>summary{cursor:pointer;font-size:.9rem;font-weight:bold;min-height:40px;padding:10px 0;color:var(--teal)}.focus-choice>summary span{font-size:.78rem;font-weight:normal;margin-left:12px;text-decoration:underline;text-underline-offset:3px}.focus-choice[open]>.focus-picker{margin:10px 0}
