:root{
  --ink:#101820;
  --ink-2:#253340;
  --paper:#f5f3ee;
  --card:#ffffff;
  --line:#d9ddd9;
  --accent:#f3a712;
  --accent-2:#1d7a6d;
  --danger:#bf3b31;
  --muted:#66737c;
  --radius:20px;
  --shadow:0 10px 30px rgba(16,24,32,.08);
  font-family:Inter,"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic UI",system-ui,-apple-system,sans-serif;
  color:var(--ink);
  background:var(--paper);
}
*{box-sizing:border-box}
html{background:var(--paper);scroll-behavior:smooth}
body{margin:0;min-height:100vh;background:
  radial-gradient(circle at 90% 0%,rgba(243,167,18,.13),transparent 27rem),
  var(--paper);}
button,input,select,textarea{font:inherit}
button{touch-action:manipulation}
.safety{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:9px;padding:8px max(14px,env(safe-area-inset-left));background:#fff3d7;color:#5d4100;border-bottom:1px solid #ecd18d;font-size:12px;font-weight:700;line-height:1.35}
.safety-mark{display:grid;place-items:center;min-width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--ink);font-weight:900}
.app-header{display:flex;align-items:center;justify-content:space-between;padding:17px 18px 10px;max-width:1180px;margin:auto}
.brand-row{display:flex;align-items:center;gap:11px}.brand{display:flex;align-items:baseline;flex-wrap:wrap;font-weight:900;letter-spacing:-.02em;font-size:20px;line-height:1.15}.brand-main{white-space:nowrap}.brand-company{margin-left:.55em;white-space:nowrap;font-size:12px;font-weight:800;letter-spacing:0;color:var(--muted)}.tagline{font-size:11px;color:var(--muted);font-weight:700;margin-top:3px}.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(180deg,#0f2132,#101820);display:grid;place-items:center;box-shadow:0 6px 18px rgba(16,24,32,.18)}.brand-mark svg{width:34px;height:34px}.brand-mark .mark-body{fill:#e7ebef;stroke:#95a0aa;stroke-width:.8}.brand-mark .mark-cut{fill:#101820}.brand-mark .mark-lines{fill:none;stroke:#66727c;stroke-width:1.05;stroke-linecap:round}.brand-mark .pencil-body{fill:#f3a712}.brand-mark .pencil-band{fill:#d4d8de}.brand-mark .pencil-tip{fill:#f4d7b4}.brand-mark .pencil-lead{fill:#101820}
.header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.header-fav-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid #d5dad7;background:#fff;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:900;color:var(--ink);box-shadow:0 4px 14px rgba(16,24,32,.04)}.header-fav-star{color:#b88300}.header-fav-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#fff2cd;color:#6a4c05;font-size:11px}.lang-switch{position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:3px;width:82px;height:38px;border:1px solid #cfd4d2;border-radius:999px;background:#e7e7e2;box-shadow:inset 0 1px 2px rgba(16,24,32,.05)}.lang-opt{position:relative;z-index:2;border:0;background:transparent;height:32px;padding:0;font-size:11px;font-weight:900;color:#6d777c;border-radius:999px;transition:color .18s ease}.lang-opt.active{color:var(--ink)}.lang-thumb{position:absolute;z-index:1;top:3px;left:3px;width:38px;height:32px;border-radius:999px;background:var(--accent);box-shadow:0 2px 8px rgba(16,24,32,.15);transition:transform .2s cubic-bezier(.2,.8,.2,1)}.lang-switch.is-vi .lang-thumb{transform:translateX(38px)}
main{max-width:1180px;margin:0 auto;padding:0 14px 56px}
.hero{margin:7px 0 17px;border-radius:26px;background:var(--ink);color:#fff;padding:24px 22px;display:flex;justify-content:space-between;align-items:flex-end;gap:18px;overflow:hidden;position:relative}.hero:after{content:"";position:absolute;width:210px;height:210px;border:36px solid rgba(243,167,18,.22);border-radius:50%;right:-80px;top:-105px}.hero-copy{position:relative;z-index:1}.eyebrow{font-size:11px;color:#f7c65e;font-weight:900;letter-spacing:.08em;margin:0 0 8px}.hero h1{font-size:clamp(25px,6vw,43px);line-height:1.08;margin:0 0 9px;letter-spacing:-.04em}.hero p:last-child{margin:0;color:#cbd3d8;font-size:13px;line-height:1.6}.install-box{position:relative;z-index:2}.primary-btn{border:0;border-radius:14px;padding:13px 16px;background:var(--accent);color:var(--ink);font-weight:900;white-space:nowrap}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:24px 2px 12px}.section-head.compact{margin-top:10px}.section-head h2{font-size:17px;margin:0;letter-spacing:-.02em}.section-head p{font-size:12px;color:var(--muted);margin:4px 0 0;line-height:1.5}.count-chip{font-size:11px;font-weight:900;padding:4px 8px;border-radius:999px;background:#e7ebe9;color:#4c5a62}
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.quick-card-wrap,.tool-card-wrap{position:relative}.quick-card,.tool-card{width:100%}.quick-card{border:1px solid #d9dcda;border-radius:16px;background:rgba(255,255,255,.85);min-height:75px;padding:10px 8px;text-align:left;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 4px 16px rgba(16,24,32,.04)}.quick-card .mini-icon{font-size:19px;font-weight:900}.quick-card .mini-title{font-size:11px;line-height:1.25;font-weight:900}.card-fav-toggle{position:absolute;top:8px;right:8px;width:32px;height:32px;border:1px solid #d7dbd8;background:#fff;border-radius:999px;display:grid;place-items:center;font-size:15px;color:#879199;box-shadow:0 4px 14px rgba(16,24,32,.08);z-index:2}.card-fav-toggle.active{background:#fff2cd;border-color:#e5bf59;color:#b88300}.card-fav-toggle.quick{top:7px;right:7px}.card-fav-toggle.small{width:28px;height:28px;font-size:13px}
.search-wrap{margin:16px 0 12px}.search-box{height:49px;border:1px solid #cdd3d1;background:#fff;border-radius:16px;display:flex;align-items:center;gap:10px;padding:0 14px;box-shadow:0 4px 16px rgba(16,24,32,.04)}.search-box span{font-size:24px;color:#7a858b}.search-box input{border:0;outline:0;width:100%;background:transparent;font-size:15px;color:var(--ink)}
.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;background:#e6e5e0;border-radius:14px;padding:4px;position:sticky;top:37px;z-index:25;box-shadow:0 8px 20px rgba(16,24,32,.04)}.seg{border:0;border-radius:11px;background:transparent;height:40px;color:#606b72;font-size:13px;font-weight:900}.seg.active{background:#fff;color:var(--ink);box-shadow:0 2px 10px rgba(16,24,32,.08)}
.view{display:none}.view.active{display:block}.tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tool-card{border:1px solid #d8dcda;background:var(--card);border-radius:18px;padding:14px;min-height:129px;text-align:left;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 5px 18px rgba(16,24,32,.045);transition:transform .12s ease,border-color .12s ease}.tool-card:active{transform:scale(.985)}.tool-icon{width:40px;height:40px;border-radius:12px;background:#eef0ed;display:grid;place-items:center;font-size:20px;font-weight:900;color:var(--ink)}.tool-card.featured .tool-icon{background:#fff1cf}.tool-card-wrap .tool-card{padding-right:48px}.tool-title{font-weight:900;font-size:14px;line-height:1.25;margin-top:10px}.tool-desc{font-size:11px;color:var(--muted);margin-top:4px;line-height:1.4}.tool-footer{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.tool-tag{font-size:9px;font-weight:900;color:#718087;letter-spacing:.05em}.tool-arrow{font-weight:900;color:#90999e}
.subtabs{display:flex;gap:7px;overflow:auto;padding:1px 1px 7px;scrollbar-width:none}.subtabs::-webkit-scrollbar{display:none}.subtab{white-space:nowrap;border:1px solid #d5d9d8;background:#fff;border-radius:999px;padding:9px 13px;font-size:12px;font-weight:800;color:#5b6971}.subtab.active{background:var(--ink);border-color:var(--ink);color:#fff}.talk-panel{display:none;margin-top:8px}.talk-panel.active{display:block}
.phrase-list,.term-list{display:grid;gap:8px}.phrase-card,.term-card,.protocol-card,.ref-card{border:1px solid #d7dcda;background:#fff;border-radius:18px;padding:14px}.phrase-jp{font-size:14px;font-weight:900;line-height:1.4}.phrase-vi{font-size:13px;color:var(--accent-2);font-weight:800;line-height:1.45;margin-top:5px}.phrase-actions{display:flex;gap:7px;margin-top:10px}.speak-btn,.copy-btn{border:1px solid #d5d9d8;background:#f8f9f7;border-radius:10px;padding:8px 10px;font-size:11px;font-weight:900;color:var(--ink)}.term-card{display:grid;grid-template-columns:1fr 1fr;gap:8px}.term-jp{font-weight:900;font-size:14px}.term-vi{font-size:13px;color:var(--accent-2);font-weight:800}.term-note{grid-column:1/-1;font-size:10px;color:var(--muted)}.protocol-grid{display:grid;gap:9px}.protocol-card strong{display:block;font-size:14px;margin-bottom:5px}.protocol-card p{margin:0;font-size:12px;line-height:1.55;color:var(--muted)}
.ref-stack{display:grid;gap:12px}.ref-card h3{font-size:14px;margin:0 0 11px}.ref-table{display:grid;gap:0;border:1px solid #e0e3e1;border-radius:12px;overflow:hidden}.ref-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:9px 10px;border-bottom:1px solid #e6e8e6;font-size:11px}.ref-row:last-child{border-bottom:0}.ref-row.head{background:#f0f2ef;font-weight:900;color:#526068}.holiday-switch{display:flex;gap:6px;margin-bottom:10px}.holiday-switch button{border:1px solid #d6dad8;border-radius:10px;padding:7px 10px;background:#fff;font-size:11px;font-weight:900}.holiday-switch button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.holiday-item{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #eceeec}.holiday-item:last-child{border-bottom:0}.holiday-date{font-size:12px;font-weight:900;min-width:66px}.holiday-name{font-size:12px;line-height:1.4;text-align:right}.holiday-note{display:block;color:var(--muted);font-size:10px;margin-top:3px}.next-holiday{padding:12px;border-radius:12px;background:#fff4d9;margin-bottom:10px;font-size:12px;line-height:1.5}.next-holiday strong{display:block;color:#5b420c;font-size:10px;letter-spacing:.05em;margin-bottom:3px}
footer{max-width:1180px;margin:0 auto;padding:26px 18px calc(30px + env(safe-area-inset-bottom));border-top:1px solid #d8dcd8}.footer p{margin:0}.muted{color:var(--muted)}.fine{font-size:10px;line-height:1.5;color:var(--muted);margin-top:6px}
.tool-dialog{border:0;padding:0;margin:0;max-width:none;width:100vw;height:100dvh;background:transparent}.tool-dialog::backdrop,.favorites-dialog::backdrop{background:rgba(5,12,17,.48);backdrop-filter:blur(5px)}.dialog-shell,.favorites-dialog-shell{background:var(--paper);width:100%;height:100%;overflow:auto;overflow-x:hidden}.dialog-top{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:8px;padding:12px 12px;border-bottom:1px solid #d9ddda;background:rgba(245,243,238,.94);backdrop-filter:blur(14px)}.icon-btn{border:1px solid #d1d6d4;background:#fff;width:42px;height:42px;border-radius:13px;font-weight:900;font-size:18px}.dialog-kicker{font-size:9px;font-weight:900;color:var(--accent-2);letter-spacing:.08em}.dialog-title-wrap{min-width:0}.dialog-title-wrap h2{font-size:17px;margin:2px 0 0;overflow-wrap:anywhere}.dialog-body{max-width:720px;margin:0 auto;padding:18px 14px 40px}.calc-intro{font-size:12px;color:var(--muted);line-height:1.55;margin:0 0 15px}.input-grid{display:grid;gap:12px}.field{display:block}.field-label{display:flex;justify-content:space-between;gap:12px;font-size:12px;font-weight:900;margin:0 2px 6px}.field-hint{font-size:10px;font-weight:600;color:var(--muted)}.field input,.field select,.field textarea{width:100%;border:1px solid #cbd1cf;background:#fff;border-radius:14px;padding:13px 14px;outline:0;color:var(--ink);font-size:16px;box-shadow:0 3px 12px rgba(16,24,32,.03)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px rgba(29,122,109,.12)}.field textarea{min-height:95px;resize:vertical}.calc-btn{width:100%;border:0;border-radius:15px;padding:14px 16px;background:var(--ink);color:#fff;font-weight:900;font-size:15px;margin-top:14px}.result-box{margin-top:16px;border-radius:18px;background:#fff;border:1px solid #d3d8d5;padding:15px;box-shadow:var(--shadow)}.result-label{font-size:10px;font-weight:900;color:#718087;letter-spacing:.08em}.result-main{font-size:clamp(27px,8vw,38px);font-weight:950;letter-spacing:-.04em;margin:4px 0 8px;word-break:break-word}.result-list{display:grid;gap:7px;margin-top:8px}.result-row{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;border-top:1px solid #edf0ed;padding-top:8px;font-size:12px}.result-row span:first-child{color:var(--muted)}.result-row strong{text-align:right}.result-note{font-size:10px;color:var(--muted);line-height:1.55;margin-top:10px}.output-text{white-space:pre-wrap;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.65;background:#f5f6f3;border-radius:12px;padding:11px;margin-top:9px}.dialog-actions{display:flex;gap:8px;margin-top:11px}.dialog-actions button{flex:1}.star{width:auto;min-width:92px;padding:0 12px;font-size:13px;white-space:normal;line-height:1.15;height:auto;min-height:42px}.star.active{background:#fff2cd;border-color:#e5bf59}.favorites-dialog{border:0;padding:0;margin:0;max-width:none;width:100vw;height:100dvh;background:transparent}.favorites-dialog-head{position:sticky;top:0;z-index:10;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 16px 12px;border-bottom:1px solid #d9ddda;background:rgba(245,243,238,.94);backdrop-filter:blur(14px)}.favorites-dialog-head h2{margin:0;font-size:18px}.favorites-dialog-head p{margin:4px 0 0;font-size:12px;color:var(--muted)}.favorites-manager-list{padding:12px 16px;display:grid;gap:10px}.favorite-manager-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #d9dcda;background:#fff;border-radius:16px;padding:12px}.favorite-manager-main{display:flex;align-items:center;gap:12px;min-width:0;border:0;background:transparent;padding:0;text-align:left}.favorite-manager-main .mini-icon{width:36px;height:36px;border-radius:12px;background:#fff1cf;display:grid;place-items:center;font-weight:900}.favorite-manager-title{font-weight:900;font-size:14px;line-height:1.3}.favorite-manager-cat{font-size:10px;font-weight:900;color:#718087;letter-spacing:.05em;margin-top:3px}.favorite-manager-actions{display:flex;align-items:center;gap:8px}.favorite-remove{width:36px;height:36px;border:1px solid #d7dbd8;background:#fff;border-radius:999px;font-size:18px;color:#6e7980}.favorites-manager-empty{padding:32px 16px;text-align:center;color:var(--muted);font-size:12px}.favorites-dialog-footer{padding:0 16px 18px;display:flex;justify-content:flex-end}.text-action{border:1px solid #d7dbd8;background:#fff;border-radius:12px;padding:10px 12px;font-size:12px;font-weight:900;color:var(--ink)}.danger-soft{background:#fff6f1;color:#8f3c26;border-color:#ebc2b5}.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translate(-50%,15px);opacity:0;pointer-events:none;background:var(--ink);color:#fff;border-radius:999px;padding:9px 14px;font-size:11px;font-weight:800;z-index:80;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.empty{padding:28px 14px;text-align:center;color:var(--muted);font-size:12px}
@media (max-width:699px){.app-header{align-items:flex-start;gap:10px}.header-actions{margin-left:auto}.header-fav-label{display:none}.brand{font-size:18px}.brand-company{display:block;width:100%;margin-left:0;margin-top:2px}.header-fav-btn{padding:8px 10px}.dialog-top{padding:10px}.star{min-width:64px;padding:0 8px;font-size:12px}}@media (min-width:700px){main{padding-left:24px;padding-right:24px}.app-header{padding-left:28px;padding-right:28px}.quick-grid{grid-template-columns:repeat(6,1fr)}.tool-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.phrase-list,.term-list,.protocol-grid,.ref-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.tool-dialog,.favorites-dialog{padding:34px}.dialog-shell,.favorites-dialog-shell{max-width:780px;height:min(860px,calc(100dvh - 68px));margin:auto;border-radius:24px;overflow:auto;box-shadow:0 30px 80px rgba(0,0,0,.25)}.dialog-top,.favorites-dialog-head{border-radius:24px 24px 0 0}.dialog-body{padding-left:24px;padding-right:24px}.input-grid.two{grid-template-columns:1fr 1fr}}
@media (min-width:1000px){.tool-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.quick-grid{grid-template-columns:repeat(8,1fr)}.hero{padding:34px}.hero p:last-child{font-size:14px}}

/* v0.1.1 lightweight anonymous feedback */
.feedback-box{margin-top:14px;padding-top:13px;border-top:1px solid #e6e9e6}.feedback-question{font-size:12px;font-weight:900;line-height:1.4}.feedback-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.feedback-btn,.feedback-reason{min-height:44px;border:1px solid #d5dad7;background:#fafbf9;color:var(--ink);border-radius:12px;padding:9px 10px;font-size:11px;font-weight:900;text-align:center}.feedback-btn:active,.feedback-reason:active{transform:scale(.985)}.feedback-btn.positive{background:#f2f8f5;border-color:#c9ded5}.feedback-btn.negative{background:#fbf7f1}.feedback-reasons{margin-top:10px;padding:10px;border-radius:13px;background:#f6f6f2}.feedback-reasons[hidden]{display:none}.feedback-why{font-size:11px;font-weight:900;margin-bottom:7px}.feedback-reason-grid{display:grid;gap:6px}.feedback-reason{background:#fff;text-align:left;min-height:42px}.feedback-fine{font-size:9px;line-height:1.55;color:var(--muted);margin-top:8px}.feedback-thanks{font-size:12px;font-weight:900;color:var(--accent-2);padding:4px 0}
@media (min-width:700px){.feedback-reason-grid{grid-template-columns:1fr 1fr}.feedback-reason:last-child{grid-column:1/-1}}

.favorite-section{margin-top:18px}.favorite-section[hidden]{display:none!important}.favorite-card{border-color:#d9b44c;background:#fffaf0}.favorite-heading{display:flex;align-items:center;gap:8px}
