:root{--bg:#f7f8fb;--panel:#fff;--panel-2:#f4f6fb;--text:#1f2430;--muted:#656f7d;--primary:#1e88e5;--gold:#b8860b;--border:#dde2ea;--hover:#eef3fb;--ok:#2e7d32;--warn:#ef6c00;--header-h:56px;--footer-h:clamp(24px,3vh,36px);--chrome:184px}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica,Arial,Apple Color Emoji,Segoe UI Emoji;background:var(--bg);color:var(--text)}.container{width:100%;max-width:1800px;margin:0 auto;padding:0 12px}.site-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}.site-header{position:-webkit-sticky;position:sticky;top:0;left:0;right:0;z-index:50;background:#fff;border-bottom:1px solid var(--border)}.header-row{height:var(--header-h);display:flex;align-items:center;gap:12px}.brand-link{font-weight:700;text-decoration:none;color:inherit;display:inline-flex;align-items:center;padding:6px 8px;border-radius:8px}.brand-link:hover{text-decoration:underline}.header-actions{display:flex;gap:8px}.header-btn{padding:8px 12px;border-radius:8px}@media (max-width:600px){:root{--header-h:44px}.brand-link{font-size:16px}.header-btn{font-size:12px;padding:4px 8px;line-height:1.1}}.site-main{padding-top:12px;padding-bottom:0}.site-main>.container{height:100%}.site-footer{display:flex;justify-content:center;align-items:center;color:#333;background:#f7f7f8;border-top:1px solid #e6e6ea;padding:0}.site-footer p{margin:4px 0}.contact-link{color:#1e88e5;text-decoration:underline;text-underline-offset:2px}@media (max-width:600px){.site-main{padding-top:var;padding-bottom:var(--footer-h)}.site-footer{position:fixed;left:0;right:0;bottom:0;height:var(--footer-h);z-index:10;background:hsla(0,0%,100%,.92);border-top:1px solid var(--border)}.site-footer p{margin:0;font-size:13px}}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 6px 16px rgba(0,0,0,.06)}.panel.pad{padding:12px}.panel.sec{background:var(--panel-2)}.btn{background:#fff;border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:10px;cursor:pointer}.btn:hover{background:var(--hover)}.btn.primary{border-color:#246ebf;background:#eef6ff;color:#0d47a1}.btn.danger{border-color:#ffcdd2;background:#ffebee;color:#b71c1c}.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn.small{padding:6px 10px;border-radius:8px;font-size:12px}input,select,textarea{width:100%;background:#fff;color:var(--text);border:1px solid var(--border);border-radius:10px;padding:8px 10px;outline:none}input:focus,select:focus,textarea:focus{border-color:#2b68a3;box-shadow:0 0 0 3px rgba(37,102,168,.15)}label{font-size:12px;color:var(--muted);display:inline-block;margin-bottom:4px}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border);background:#f9fbff;position:-webkit-sticky;position:sticky;top:0;z-index:1}.table td{padding:8px;border-bottom:1px solid #f0f3f8}.table tr:hover{background:#fafcff}.muted{color:var(--muted)}.badge{display:inline-block;padding:2px 6px;border-radius:6px;border:1px solid var(--border);background:#f9fbff;color:#29425c;font-size:12px}.highlight{background:#fff9e6}.success{color:#2e7d32}.warn{color:#ef6c00}.spinner{width:16px;height:16px;border:2px solid #ccc;border-top-color:#888;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.admin-grid{display:grid;grid-template-columns:minmax(600px,1.3fr) minmax(460px,1fr);grid-gap:16px;gap:16px}@media (max-width:1100px){.admin-grid{grid-template-columns:1fr}}.annotator-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.annotator-frame{position:relative;border:1px solid var(--border);overflow:hidden;border-radius:12px;background:#fff;height:min(70vh,900px)}@media (max-width:768px){.annotator-frame{height:60vh}}.sidebar{max-height:calc(100vh - 220px);overflow:auto;background:var(--panel)}.group{padding:10px;border:1px solid var(--border);border-radius:10px;margin-bottom:12px;background:#fff}.group.sec{background:#fafcff}.group .row{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.group .row3{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:10px;gap:10px}.group .row1{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px}.group .actions{justify-content:flex-end}.breadcrumbs,.group .actions{display:flex;gap:8px;align-items:center}.breadcrumbs{color:var(--muted);margin-bottom:4px}.breadcrumbs .sep{color:#bbb}.scheme-page{height:calc(100vh - var(--header-h) - var(--footer-h) - 10px);display:grid;grid-template-rows:auto auto 1fr;grid-gap:12px;gap:12px;overflow:hidden}.scheme-title{margin:0 0 6px}.scheme-grid{display:grid;grid-template-columns:minmax(620px,1.35fr) minmax(420px,1fr);grid-gap:16px;gap:16px;min-height:0;overflow:hidden}@media (max-width:1300px){.scheme-grid{grid-template-columns:1fr 1fr}}@media (max-width:1100px){.scheme-grid{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}.list-card,.viewer-card{min-height:0;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:#fff;display:flex;flex-direction:column}.viewer-card{padding:10px}.list-card>*,.viewer-card>*{flex:1 1;min-height:0}.list-scroll{height:100%;overflow:auto}.edit-page{height:calc(100vh - var(--header-h) - var(--footer-h) - 10px);grid-template-rows:auto 1fr;grid-gap:12px;gap:12px}.edit-grid,.edit-page{display:grid;overflow:hidden}.edit-grid{grid-template-columns:minmax(700px,1.4fr) minmax(420px,1fr);grid-gap:16px;gap:16px;min-height:0}@media (max-width:1100px){.edit-grid{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}.home-split{min-height:calc(100vh - var(--header-h) - var(--footer-h));grid-gap:16px}.home-columns,.home-split{display:grid;grid-template-rows:auto 1fr;gap:16px}.home-columns{grid-template-columns:minmax(280px,30%) minmax(360px,70%);grid-gap:16px;height:100%}.home-search{position:relative;width:100%;grid-column:1/-1}.home-search>input{width:100%;height:40px;padding:0 12px;outline:none}.home-search>input,.home-suggests{border:1px solid var(--border);border-radius:10px}.home-suggests{position:absolute;z-index:20;top:calc(100% + 4px);left:0;right:0;max-height:300px;overflow:auto;background:#fff;box-shadow:0 8px 20px rgba(0,0,0,.08)}.home-left{grid-row:2/3;grid-column:1/2;min-height:0;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px 16px}.home-left-scroll{height:100%;overflow:auto;padding-right:4px}.home-sec{margin:12px 0}.home-schemes{list-style:none;padding:0 0 0 6px;margin:6px 0 0}.home-schemes li{margin:6px 0}.home-schemes a{text-decoration:none}.home-schemes a:hover{text-decoration:underline}.home-right{grid-row:2/3;grid-column:2/3;min-height:0;overflow:hidden}.preview-card{height:100%;border:1px solid var(--border);border-radius:12px;background:#fff;display:grid;grid-template-rows:auto 1fr}.preview-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #eee}.preview-body{min-height:0;display:grid;place-items:center;padding:8px}.preview-figure{margin:0;width:100%;height:100%;display:grid;place-items:center}.preview-figure img{max-width:100%!important;max-height:100%!important;width:auto!important;height:auto!important;object-fit:contain!important;display:block}.preview-empty{font-size:14px}.subsec-list{display:grid;grid-gap:8px;gap:8px}.subsec{border:1px solid var(--border);border-radius:10px;background:#fff;overflow:hidden}.subsec-head{width:100%;display:grid;grid-template-columns:auto 1fr auto;align-items:center;grid-gap:8px;gap:8px;padding:8px 10px;border:0;background:#f9fafb;cursor:pointer;text-align:left}.subsec-icon{width:20px;height:20px;display:grid;place-items:center;border:1px solid var(--border);border-radius:6px;font-weight:700;background:#fff}.subsec-title{font-weight:600}.subsec-count{font-size:12px;color:var(--muted)}.subsec .home-schemes{padding:8px 12px 10px 28px}@media (max-width:1100px){.home-columns{grid-template-columns:1fr}.home-right{display:none}}@media (max-width:600px){.home-columns{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto;gap:10px;align-items:start}.home-left{min-height:0;overflow:visible}.home-left-scroll{height:auto;max-height:none;overflow:visible;padding-bottom:calc(var(--footer-h) + env(safe-area-inset-bottom) + 12px)}}