:root{--prism-primary-50: #f0f9ff;--prism-primary-100: #e0f2fe;--prism-primary-200: #bae6fd;--prism-primary-300: #7dd3fc;--prism-primary-400: #38bdf8;--prism-primary-500: #0ea5e9;--prism-primary-600: #0284c7;--prism-primary-700: #0369a1;--prism-primary-800: #075985;--prism-primary-900: #0c4a6e;--prism-bg: #f9fafb;--prism-surface: #ffffff;--prism-surface-2: #f3f4f6;--prism-border: #e5e7eb;--prism-border-strong: #d1d5db;--prism-ink: #111827;--prism-ink-soft: #4b5563;--prism-ink-faint: #9ca3af;--prism-ink-on-primary:#ffffff;--prism-btn-primary-bg: var(--prism-primary-600);--prism-btn-primary-hover: var(--prism-primary-700);--prism-btn-secondary-bg: #e5e7eb;--prism-btn-secondary-hover:#d1d5db;--prism-btn-secondary-ink: #1f2937;--prism-ok-bg: #dcfce7;--prism-ok-fg: #15803d;--prism-warn-bg: #fef3c7;--prism-warn-fg: #b45309;--prism-bad-bg: #fee2e2;--prism-bad-fg: #b91c1c;--prism-info-bg: #dbeafe;--prism-info-fg: #1d4ed8;--prism-radius: .5rem;--prism-radius-lg: .75rem;--prism-radius-full: 9999px;--prism-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--prism-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--prism-dur: .2s;--prism-font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--prism-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--prism-focus-ring: 0 0 0 2px var(--prism-primary-500);--prism-tap: 52px}.dark{--prism-bg: #111827;--prism-surface: #1f2937;--prism-surface-2: #374151;--prism-border: #374151;--prism-border-strong: #4b5563;--prism-ink: #f9fafb;--prism-ink-soft: #d1d5db;--prism-ink-faint: #6b7280;--prism-btn-secondary-bg: #374151;--prism-btn-secondary-hover:#4b5563;--prism-btn-secondary-ink: #e5e7eb;--prism-ok-bg: rgb(22 163 74 / .2);--prism-ok-fg: #4ade80;--prism-warn-bg: rgb(217 119 6 / .2);--prism-warn-fg: #fbbf24;--prism-bad-bg: rgb(220 38 38 / .2);--prism-bad-fg: #f87171;--prism-info-bg: rgb(37 99 235 / .2);--prism-info-fg: #60a5fa;--prism-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .4);--prism-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .5), 0 2px 4px -2px rgb(0 0 0 / .5)}*{box-sizing:border-box}html,body{margin:0;padding:0}html{transition:background-color var(--prism-dur) ease,color var(--prism-dur) ease}body{background:var(--prism-bg);color:var(--prism-ink);font:16px/1.5 var(--prism-font);-webkit-font-smoothing:antialiased}#app{min-height:100dvh}.shell{display:flex;flex-direction:column;min-height:100dvh;max-width:720px;margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;background:var(--prism-surface);border-bottom:1px solid var(--prism-border);box-shadow:var(--prism-shadow-sm);position:sticky;top:0;z-index:20}.brand{font-weight:700;font-size:1.15rem;color:var(--prism-ink);text-decoration:none;letter-spacing:.01em}.brand span{color:var(--prism-primary-600)}.dark .brand span{color:var(--prism-primary-400)}.topbar__right{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.chip{display:inline-flex;align-items:center;background:var(--prism-surface-2);color:var(--prism-ink-soft);border:1px solid var(--prism-border);border-radius:var(--prism-radius-full);padding:4px 12px;font-size:.82rem;font-weight:500;text-decoration:none}.badge{background:var(--prism-warn-bg);color:var(--prism-warn-fg);font-weight:700;border-radius:var(--prism-radius-full);padding:4px 11px;font-size:.82rem;text-decoration:none}.nfc-chip{min-height:auto;cursor:pointer;font:inherit;font-size:.82rem;font-weight:600}.nfc-chip.on{background:var(--prism-primary-600);color:var(--prism-ink-on-primary);border-color:var(--prism-primary-600)}.content{flex:1;padding:16px 16px 32px}.foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--prism-border);background:var(--prism-surface);color:var(--prism-ink-faint);font-size:.78rem}.foot a{color:var(--prism-primary-600);text-decoration:none;font-weight:500}.dark .foot a{color:var(--prism-primary-400)}.theme-btn{background:none;border:1px solid var(--prism-border);border-radius:var(--prism-radius-full);color:var(--prism-ink-soft);padding:3px 11px;font:inherit;font-size:.78rem;min-height:auto;cursor:pointer}h1{font-size:1.35rem;font-weight:700;margin:0 0 6px;letter-spacing:-.01em}h2{font-size:1.02rem;font-weight:600;margin:20px 0 8px}.muted{color:var(--prism-ink-soft)}.small{font-size:.86rem}code{font-family:var(--prism-font-mono);font-size:.85em;background:var(--prism-surface-2);padding:1px 6px;border-radius:5px}.grid{display:grid;gap:12px;grid-template-columns:1fr 1fr;margin-top:14px}.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:100px;background:var(--prism-surface);border:1px solid var(--prism-border);border-radius:var(--prism-radius-lg);box-shadow:var(--prism-shadow-sm);color:var(--prism-ink);text-decoration:none;font-weight:600;text-align:center;padding:12px;transition:box-shadow var(--prism-dur) ease,transform var(--prism-dur) ease}.tile:active{transform:scale(.98)}.tile em{font-style:normal;font-size:.78rem;font-weight:400;color:var(--prism-ink-soft)}.tile--primary{background:var(--prism-primary-600);border-color:var(--prism-primary-600);color:var(--prism-ink-on-primary);grid-column:1 / -1;min-height:116px;font-size:1.12rem;box-shadow:var(--prism-shadow-md)}.tile--primary em{color:var(--prism-primary-100)}button,.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--prism-tap);padding:0 18px;border-radius:var(--prism-radius);border:1px solid var(--prism-border);background:var(--prism-btn-secondary-bg);color:var(--prism-btn-secondary-ink);font:inherit;font-weight:500;cursor:pointer;text-decoration:none;transition:background-color var(--prism-dur) ease}button:hover,.btn:hover{background:var(--prism-btn-secondary-hover)}button.primary,.btn.primary{background:var(--prism-btn-primary-bg);color:var(--prism-ink-on-primary);border-color:transparent}button.primary:hover,.btn.primary:hover{background:var(--prism-btn-primary-hover)}button.ghost,.btn.ghost{background:transparent}button.ghost:hover,.btn.ghost:hover{background:var(--prism-surface-2)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:var(--prism-focus-ring)}.row{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0;align-items:center}label.field{display:block;margin:14px 0}label.field>span{display:block;font-size:.86rem;font-weight:500;color:var(--prism-ink-soft);margin-bottom:5px}input,select,textarea{width:100%;min-height:48px;background:var(--prism-surface);border:1px solid var(--prism-border-strong);color:var(--prism-ink);border-radius:var(--prism-radius);padding:10px 12px;font:inherit;transition:border-color var(--prism-dur) ease}input:focus,select:focus,textarea:focus{border-color:var(--prism-primary-500)}textarea{min-height:88px}input[type=checkbox],input[type=radio]{accent-color:var(--prism-primary-600)}.card{background:var(--prism-surface);border:1px solid var(--prism-border);border-radius:var(--prism-radius-lg);box-shadow:var(--prism-shadow-sm);padding:16px;margin:12px 0}.ok{color:var(--prism-ok-fg)}.warn{color:var(--prism-warn-fg)}.bad{color:var(--prism-bad-fg)}p.ok,p.warn,p.bad,span.ok,span.warn,span.bad{font-weight:500}.preview{width:100%;border-radius:var(--prism-radius-lg);border:1px solid var(--prism-border);box-shadow:var(--prism-shadow-sm)}video.viewfinder{width:100%;border-radius:var(--prism-radius-lg);background:#000;box-shadow:var(--prism-shadow-sm)}.qrbox{background:#fff;border:1px solid var(--prism-border);border-radius:var(--prism-radius);padding:8px;display:inline-block}.qrbox svg{display:block}.nfc-debug{position:fixed;bottom:56px;left:8px;right:8px;z-index:50;background:var(--prism-surface);border:1px solid var(--prism-warn-fg);color:var(--prism-warn-fg);border-radius:var(--prism-radius);padding:8px 10px;font:12px/1.4 var(--prism-font-mono);word-break:break-all;box-shadow:var(--prism-shadow-md)}@media print{body{background:#fff!important;color:#000!important}.topbar,.foot,.no-print,.nfc-debug{display:none!important}.shell{max-width:none}}.print-sheet{display:grid;grid-template-columns:repeat(3,1fr);gap:10mm}.print-item{text-align:center;break-inside:avoid;padding:4mm;border:.3mm dashed #999;border-radius:2mm;color:#000;background:#fff}.print-item .qrbox{padding:2mm;border:none}.print-item .plabel{font-weight:700;margin-top:2mm}.print-item .pid{font-family:var(--prism-font-mono);font-size:.75rem;color:#333}
