:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans",sans-serif;font-size:16px;color:#233d2e;background:#f4f6f5;--green:#16432f;--muted:#77877b;--line:#dfe7e1}*{box-sizing:border-box}body{margin:0;line-height:1.55}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid #85b69d;outline-offset:2px}h1,h2,p{margin:0}.ps-header{background:white;border-bottom:1px solid var(--line);padding:15px max(22px,calc((100vw - 1000px)/2));display:flex;align-items:center;gap:16px}body.ps-assessment>.ps-header{display:none}.ps-header span{font-size:13px;color:var(--muted)}.ps-header strong{font-size:17px}.ps-primary,.ps-secondary{min-height:44px;border-radius:7px;padding:10px 21px;font-size:15px;font-weight:600}.ps-primary{background:var(--green);border:1px solid var(--green);color:#fff}.ps-secondary{background:#fff;border:1px solid #d6e0d8;color:#355642}#psApp{max-width:1000px;margin:32px auto 55px;padding:0 22px}.ps-entry,.ps-result{max-width:480px;margin:65px auto 0;padding:28px;background:#fff;border:1px solid var(--line);border-radius:12px}.ps-entry h1{font-size:23px;margin-bottom:20px}.ps-label{display:block;font-size:13px;margin-bottom:8px;color:var(--muted)}#psKey{width:100%;border:1px solid #bccfc1;border-radius:8px;min-height:64px;font-size:29px;padding:10px 17px;letter-spacing:.28em;color:var(--green);font-variant-numeric:tabular-nums}#psKey::placeholder{color:#bcc8bf}.ps-entry .ps-primary{width:100%;margin-top:18px}#psError{font-size:14px;color:#a53839;margin-top:13px}.ps-exam-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px}.ps-exam-heading h1{font-size:22px}.ps-exam-heading p{font-size:13px;color:var(--muted);margin-top:5px}.ps-time{flex:none;text-align:right}.ps-time span{font-size:12px;color:var(--muted);display:block}.ps-time strong{font-size:28px;letter-spacing:.03em;font-variant-numeric:tabular-nums;line-height:1.2}.ps-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}.ps-question{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}.ps-topline{padding:13px 23px;display:flex;justify-content:space-between;color:var(--muted);font-size:13px;border-bottom:1px solid var(--line)}.ps-question-body{padding:29px 28px;min-height:255px}.ps-question-body h2{font-size:29px;font-weight:550;overflow-wrap:anywhere}.ps-question-body p{color:var(--muted);font-size:16px;margin-top:5px}.ps-inputs{display:grid;gap:12px;margin-top:25px}.ps-inputs label{display:block}.ps-inputs label span{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}.ps-inputs input{width:100%;border:1px solid #c4d4c8;border-radius:8px;padding:13px 15px;min-height:58px;font-size:20px;background:#fdfefd;color:var(--green)}.ps-inputs input::placeholder{color:#9caaa0;font-size:16px}.ps-question-actions{padding:14px 23px;display:flex;justify-content:space-between;border-top:1px solid var(--line)}.ps-sheet{background:#fff;border:1px solid var(--line);border-radius:10px;padding:17px}.ps-sheet-title{display:flex;justify-content:space-between;font-size:13px;margin-bottom:12px}.ps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:6px;max-height:160px;overflow:auto;padding:1px}.ps-grid button{padding:2px;border:1px solid var(--line);border-radius:5px;background:#fff;color:#7b8d80;font-size:12px;min-height:33px;font-variant-numeric:tabular-nums}.ps-grid button.done{background:#eaf4ed;color:#315b40}.ps-grid button.current{background:var(--green);color:#fff;border-color:var(--green)}.ps-sheet>.ps-secondary{display:block;min-width:112px;margin:12px 0 0 auto}.ps-result-title{font-size:15px;color:var(--muted)}.ps-result h1{font-size:39px;margin:10px 0}.ps-result p{font-size:14px;color:var(--muted)}.failed{color:#a9373a!important}.ps-result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:17px 0;margin:23px 0}.ps-result-stats strong{font-size:24px;display:block;font-variant-numeric:tabular-nums}.ps-result-stats span{font-size:12px;color:var(--muted)}.ps-sync{font-size:13px;color:#62816c;margin-bottom:21px}#psDialog{border:1px solid var(--line);border-radius:12px;padding:24px;width:min(430px,calc(100vw - 32px));color:#284833}#psDialog::backdrop{background:#142e2666}#psDialog h2{font-size:21px}#psDialog p{font-size:14px;color:var(--muted);margin:13px 0 22px}#psDialog>div{display:flex;justify-content:flex-end;gap:10px}.ps-review-header h1{font-size:23px}.ps-review-header p{margin:7px 0;color:var(--muted);font-size:14px}.ps-review-header a,.ps-review-toggle{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:43px;padding:9px 16px;border:1px solid #d4e2d9;border-radius:8px;background:#eaf2ed;color:#23583b;font-size:14px;font-weight:650;line-height:1.4;text-decoration:none;white-space:nowrap;-webkit-tap-highlight-color:transparent}.ps-review-list{background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 23px;margin-top:22px}.ps-review-list article{padding:17px 0;border-bottom:1px solid var(--line)}.ps-review-list article:last-child{border:0}.ps-review-list article header{display:flex;justify-content:space-between;gap:15px}.ps-review-list article p{color:var(--muted);font-size:13px;margin:5px 0}.ps-review-list article>div{display:flex;gap:9px;flex-wrap:wrap;font-size:14px}.ps-review-list article>div span{color:var(--muted)}.ps-review-list article>div b{font-weight:500;margin-right:16px;overflow-wrap:anywhere}@media(max-width:700px){#psApp{margin:22px auto;padding:0 16px}.ps-header{padding:13px 17px}.ps-entry,.ps-result{margin-top:32px;padding:23px}.ps-exam-heading{position:sticky;top:0;z-index:2;background:#f4f6f5;padding:8px 0;margin-top:-8px;margin-bottom:12px}.ps-exam-heading h1{font-size:17px}.ps-exam-heading p{font-size:12px}.ps-time strong{font-size:24px}.ps-layout{grid-template-columns:1fr;gap:12px}.ps-sheet{padding:12px}.ps-grid{grid-template-columns:repeat(10,1fr);max-height:118px;gap:5px}.ps-grid button{font-size:11px;min-height:30px}.ps-sheet>.ps-secondary{display:none}.ps-sheet-title{margin-bottom:8px}.ps-question-body{padding:24px 21px;min-height:245px}.ps-question-body h2{font-size:25px}.ps-question-actions{padding:13px 20px}.ps-topline{padding:12px 20px}}@media(max-width:380px){#psApp{padding:0 12px}.ps-exam-heading h1{font-size:15px}.ps-time strong{font-size:22px}.ps-grid{grid-template-columns:repeat(8,1fr)}.ps-header{gap:12px}.ps-header span{font-size:12px}}
.ps-login input:not([type=submit]){width:100%;min-height:48px;border:1px solid #bccfc1;border-radius:7px;padding:10px 13px;background:#fff;color:var(--green);font-size:17px}.ps-login .ps-label:not(:first-child){margin-top:16px}.ps-home{max-width:560px;margin:0 auto}.ps-account{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.ps-account>div{display:flex;gap:10px;align-items:center}.ps-account strong{font-size:17px}.ps-account span{font-size:13px;color:var(--muted)}.ps-account button{border:0;background:transparent;color:var(--muted);font-size:13px;padding:7px 0 7px 10px}.ps-request{padding:20px 23px;background:#fff;border:1px solid var(--line);border-radius:12px}.ps-request h2{font-size:20px;margin-bottom:13px}.ps-request form{display:flex;gap:10px;align-items:stretch}.ps-request select{flex:1;min-width:0;border:1px solid #c4d4c8;border-radius:7px;padding:9px 10px;font:inherit;font-size:15px;color:var(--green);background:white}.ps-request form button{flex:none;padding:9px 18px}.ps-home .ps-entry{max-width:none;margin:15px 0 0;padding:23px}.ps-home .ps-entry h1{font-size:20px;margin-bottom:14px}.ps-application{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0 0;margin-top:11px;border-top:1px solid var(--line);font-size:13px}.ps-application>span{min-width:0;overflow-wrap:anywhere}.ps-application>div{display:flex;align-items:center;gap:9px;flex:none;color:var(--muted)}.ps-retry{border:0;background:none;color:var(--green);font:inherit;padding:4px 0}.ps-empty{font-size:13px;color:var(--muted);margin-top:12px}@media(max-width:700px){.ps-home{margin:0 auto}.ps-request{padding:17px 19px}.ps-home .ps-entry{padding:19px}.ps-request form button{padding:9px 15px}}
.ps-choice-blank{min-width:0}.ps-blank-label{display:block;margin-bottom:9px;font-size:13px;color:var(--muted)}.ps-options{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.ps-option{min-width:0;min-height:40px;padding:5px 4px;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;appearance:none;border:1px solid #ccd9cf;border-radius:8px;background:#fff;color:var(--green);font-size:20px;font-weight:600;line-height:1.35;overflow-wrap:anywhere;touch-action:manipulation}.ps-option.is-selected{background:var(--green);border-color:var(--green);color:#fff}.ps-option:focus-visible{outline:3px solid #98b9a7;outline-offset:2px}.ps-option-long{font-size:15px}.ps-choice-blank+.ps-choice-blank{margin-top:5px}@media(max-width:600px){.ps-options{grid-template-columns:repeat(4,minmax(0,1fr))}.ps-option{min-height:40px;font-size:19px}.ps-option-long{font-size:14px}}

.ps-options.ps-options-compact{grid-template-columns:repeat(5,minmax(0,1fr))}.ps-options-compact .ps-option{white-space:nowrap}@media(max-width:600px){.ps-options-compact{gap:6px}.ps-options-compact .ps-option{font-size:clamp(13px,4vw,19px);padding-inline:2px}}

#psDialog .ps-notice-actions{margin-top:20px}

.ps-review-header a:hover,.ps-review-header a:active,.ps-review-toggle:hover,.ps-review-toggle:active{background:#dcebe1;border-color:#b9d0c1;color:#16432f;text-decoration:none}.ps-review-header a:focus-visible,.ps-review-toggle:focus-visible{outline:3px solid #98b9a7;outline-offset:2px}

.ps-review-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}.ps-review-empty{padding:22px 0;color:var(--muted);font-size:14px}

/* Exam text has no native selection/callout or editable IME surface. */
.ps-assessment .ps-question,.ps-assessment .ps-exam-heading,.ps-assessment .ps-sheet,.ps-kana-keyboard{
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;
}
body.ps-kana-active #psApp{padding-bottom:calc(var(--ps-keyboard-height,240px) + 22px)}
body.ps-kana-active .ps-question-body{min-height:190px;padding-block:22px}
body.ps-kana-active .ps-inputs{margin-top:18px;gap:10px}
.ps-kana-field{min-width:0}
.ps-kana-field .ps-blank-label{margin-bottom:5px}
.ps-kana-answer{display:block;position:relative;width:100%;min-height:58px;padding:12px 15px;border:1px solid #c4d4c8;border-radius:9px;background:#fdfefd;color:var(--green);font-size:24px;line-height:1.4;text-align:left;overflow-wrap:anywhere;cursor:text;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.ps-kana-answer.is-active{border-color:#39765a;box-shadow:inset 0 0 0 1px #39765a;background:#f7fbf8}
.ps-kana-answer.is-confirmed{border-color:#679b7b;background:#edf6f0}
.ps-fixed-confirm-label{display:inline-block;margin-left:10px;padding:2px 7px;border-radius:5px;background:#e6eee8;color:#315c42;font-size:13px;font-weight:600;line-height:1.5;vertical-align:middle}
.ps-kana-answer.is-confirmed .ps-fixed-confirm-label{background:#d5eadd;color:#23583b}
.ps-kana-answer:focus-visible{outline:0}
.ps-kana-placeholder{font-size:16px;color:#9caaa0}
.ps-kana-draft{color:#60776a;border-bottom:2px solid #8da899;font-size:.82em;margin-left:1px}
.ps-kana-caret{display:inline-block;vertical-align:text-bottom;width:2px;height:1.12em;background:#286448;margin-inline:1px;animation:ps-kana-blink 1.1s steps(1) infinite}
.ps-kana-selection{background:#c1decd}
@keyframes ps-kana-blink{50%{opacity:0}}
@media(prefers-reduced-motion:reduce){.ps-kana-caret{animation:none}}
.ps-kana-keyboard{position:fixed;inset:auto 0 0;z-index:8;background:#e5ede8;border-top:1px solid #d0ddd4;padding:12px max(8px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));box-shadow:0 -6px 22px #1b432b09;touch-action:manipulation}
.ps-kana-keys{max-width:760px;margin:auto;display:grid;gap:7px}
.ps-kana-row{display:flex;gap:7px;min-width:0}
.ps-kana-key{flex:1;min-width:0;height:47px;padding:0 2px;display:flex;align-items:center;justify-content:center;border:1px solid #d4dfd8;border-radius:9px;background:#fff;color:#254d38;font-size:20px;font-weight:550;line-height:1;box-shadow:0 1px 1px #3155411a;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.ps-kana-key:active{background:#c7ddce;box-shadow:none}
.ps-kana-key:focus-visible{outline:2px solid #70a78a;outline-offset:-3px}
.ps-kana-middle{padding-inline:calc((100% + 7px)/20)}
.ps-kana-bottom{display:grid;grid-template-columns:repeat(20,minmax(0,1fr));padding:0}
.ps-kana-bottom::before{content:"";grid-column:span 1}
.ps-kana-bottom .ps-kana-key{grid-column:span 2}
.ps-kana-bottom .ps-kana-delete{grid-column:span 3;background:#d6e3da;font-size:27px}
.ps-kana-controls .ps-kana-key{background:#d6e3da;font-size:15px;font-weight:600}
.ps-kana-controls .ps-kana-commit{flex:4;background:#f5f9f6}
.ps-kana-controls .ps-kana-next{flex:1.8;background:var(--green);color:#fff;border-color:var(--green)}
.ps-kana-controls .ps-kana-next:active{background:#286247}
.ps-kana-key{position:relative}
.ps-kana-key.is-pressed{background:#c7ddce;box-shadow:none;z-index:2}
.ps-kana-key.is-pressed[data-kana-key]:not(.ps-kana-delete):not(.ps-kana-controls .ps-kana-key)::after{content:attr(data-key-label);position:absolute;left:50%;bottom:calc(100% - 2px);transform:translateX(-50%);display:flex;align-items:center;justify-content:center;min-width:calc(100% + 10px);height:57px;border:1px solid #c4d6cb;border-radius:10px 10px 5px 5px;background:#f8fcf9;color:#16432f;font-size:30px;box-shadow:0 -3px 12px #23452f1f;pointer-events:none}
@media(min-width:701px) and (min-height:700px){.ps-kana-key{height:54px}.ps-kana-keyboard{padding-top:14px}}
@media(max-width:600px){
  .ps-kana-keyboard{padding-top:9px}
  .ps-kana-keys,.ps-kana-row{gap:5px}
  .ps-kana-key{height:43px;border-radius:7px;font-size:18px}
  .ps-kana-middle{padding-inline:calc((100% + 5px)/20)}
  .ps-kana-delete{font-size:24px}
  .ps-kana-controls .ps-kana-key{font-size:14px}
  .ps-kana-answer{font-size:22px;min-height:54px}
}
@media(max-height:540px){
  .ps-kana-key{height:33px;font-size:17px}
  .ps-kana-keyboard{padding-block:6px}
  .ps-kana-keys,.ps-kana-row{gap:4px}
}

/* Per-question A-D choices do not share the compact particle keyboard. */
.ps-options.ps-options-single{grid-template-columns:1fr;gap:8px}
.ps-options-single .ps-option{width:100%;min-width:0;min-height:46px;height:auto;text-align:left;justify-content:flex-start;padding:12px 16px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:18px;line-height:1.5}

/* Annotated grammar cloze: edit each suffix in the sentence, beside its source word. */
.ps-cloze-body{padding:24px 28px;min-height:0}
.ps-cloze-passage{font-size:23px;line-height:2.5;font-weight:500;white-space:pre-wrap;overflow-wrap:anywhere;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.ps-cloze-passage .ps-cloze-answer{display:inline-block;width:auto;min-width:5.5em;max-width:calc(100% - 8px);min-height:42px;margin:3px 4px;padding:6px 11px;vertical-align:baseline;border:1px solid #cbded2;border-bottom:2px solid #9fbaab;border-radius:8px;background:#f5f9f6;font:inherit;font-size:22px;line-height:1.5;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:none}
.ps-cloze-passage .ps-cloze-answer.is-active{background:#edf6f0;border-color:#245a3d;box-shadow:0 0 0 2px #245a3d18}
.ps-kana-fixed{color:#718078;font-weight:650}
.ps-cloze-answer:focus-visible{outline:none}
@media(max-width:600px){.ps-cloze-body{padding:18px 16px}.ps-cloze-passage{font-size:20px;line-height:2.45}.ps-cloze-passage .ps-cloze-answer{font-size:20px;min-width:4.8em;padding:5px 9px;margin-inline:3px}}

/* Blend the page and fixed kana keyboard into Android's light gesture bar. */
@media (pointer:coarse){
  :root{background:#fff}
  body{min-height:100vh;min-height:100dvh;background:linear-gradient(to bottom,#f4f6f5 0%,#f4f6f5 84%,#fff 100%) fixed}
  body.ps-kana-active .ps-kana-keyboard{background:linear-gradient(to bottom,#e5ede8 0%,#e5ede8 calc(100% - 34px),#fff 100%)}
}
